Конвертировать строки в объекты Java автоматически
-
29-09-2019 - |
Вопрос
Я хочу преобразовать пользовательский ввод, который поступает как 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)
и назовите это с данным значением.