При преобразовании от Строки до пользовательского объекта для Spring MVC формируют Привязку данных?

Если у вас есть C ++ 11, есть еще более короткий метод: ранжированный для . Его цель именно это.

std::vector v {1,2,3,4,5};

for (int element : v)
    std::cout << element; //prints 12345

Вы также можете применять ссылки и const к нему, когда это уместно, или использовать auto, когда тип long.

std::vector> v {{1,2,3},{4,5,6}};

for (const auto &vec : v)
{
    for (int element : vec)
        cout << element;

    cout << '\n';
} 

Выход:

123
456

22
задан Community 23 May 2017 в 11:47
поделиться

2 ответа

Думаю, вы правы. Вам необходимо зарегистрировать настраиваемый редактор в подшивке, как вы это делали раньше, чтобы вы могли преобразовать String в экземпляр Server. Здесь в справочной документации Spring есть пример настраиваемого PropertyEditor , который должен помочь вам начать работу.

Я согласен с тем, что документация MVC не самая лучшая. Мне пришлось много гуглить и искать на форумах Spring.

5
ответ дан 29 November 2019 в 04:23
поделиться

Так же, как дополнение к ответу Марка, вот что я в итоге сделал в своем контроллере.

@Override
protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
    binder.registerCustomEditor(Server.class, "serverId", new PropertyEditorSupport() {
        @Override
        public void setAsText(String text) {
            Server type = (Server) em.createNamedQuery("Server.findById")
                .setParameter("id", Short.parseShort(text)).getSingleResult();
            setValue(type);
        }
    });
}

Вы также можете сделать это, используя Spring инъекцию, в отличие от анонимных классов. Это обозначено ссылкой в ответе Марка.

Вы также можете расширить ClassEditor (см. Ниже) вместо PropertyEditorSupport. В документации Javadoc говорится:

Редактор свойств для java.lang.Class, чтобы разрешить прямое заполнение свойства Class без необходимости использования свойства имени класса String в качестве моста.

Не знаю, полностью ли я понимаю преимущества этого, но о чем следует помнить.

Полезные документы Javadocs

21
ответ дан 29 November 2019 в 04:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: