Конвертировать строки в объекты Java автоматически

StackOverflow https://stackoverflow.com/questions/3091526

Вопрос

Я хочу преобразовать пользовательский ввод, который поступает как Map<String, String[]> к объектам в Java. Более конкретно я хочу преобразовать параметры httpservletrequest на поля произвольного объекта домена.

Я хотел бы иметь что-то подобное:

Domain d = Converter.convert(params, new Domain());

Если в строковом массиве есть более одного элемента, что является значением записи карты, его следует преобразовать в список или массив. Может быть, локаль следует рассмотреть для даты и валюты. И был бы неплохо список ошибок конверсии.

Есть ли библиотека с таким преобразователем?

Вы бы назвали это «конвертером»? Я думаю, что это часто называют «связыванием данных», но это неправильный термин в моем дождении, поскольку он связан с привязки значений модели к элементам GUI, что такое немного разная вещь - не так ли?

Это было полезно?

Решение

Если ваша веб -структура не поддерживает эту функциональность.
http://commons.apache.org/beanutils/ Осуществляя пакет BanuTils, который имеет классы с аналогичными целями (может быть, точно так же), что вы хотите.

Вы также можете рассмотреть возможность перехода на более зрелые рамки ;-)

Другие советы

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

void putValue(String name, String value, Object object) throws Exception {
    String setterName = "set"+name.substring(0,1).toUpperCase()+name.substring(1);
    Method m = object.getClass().getMethod(setterName, String.class);
    if (m!=null) {
        m.invoke(object, value);
    }
}

Этот код, учитывая имя параметра 'название' Постараюсь найти метод setName(String name) и назовите это с данным значением.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top