Преобразуйте строки в объекты Java автоматически - PullRequest
1 голос
/ 22 июня 2010

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

Я бы хотел что-то вроде этого:

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

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

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

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

Ответы [ 2 ]

1 голос
/ 22 июня 2010

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

0 голосов
/ 22 июня 2010

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

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);
    }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...