Как преобразовать из ParameterMap HttpServletRequest в бин в Java - PullRequest
0 голосов
/ 11 мая 2018

У меня есть строка параметров в URL, и я хочу преобразовать эту строку в объект bean.Например, у меня есть URL www.domain.com/book?authorFirstName=Dostoevsky, и я хочу получить бин, капсулу для критериев:

public class BookCriterias {
    ...
    public String getAuthorFirstName() {...}
    public void setAuthorFirstName(String fName) {...}
    public String getAuthorLastName() {...}
    public void setAuthorLastName(String lName) {...}
    public String getGenre() {...}
    public void setGenre(String genre) {...}
}

Существует ли какая-либо готовая библиотека для этой цели?

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

Вы также можете попробовать вот так:

String authorFirstName = request.getParameter("authorFirstName");
BookCriterias bc = new BookCriterias();
if(authorFirstName!=null && authorFirstName!=""){
   bc.setAuthorFirstName(authorFirstName);
}
0 голосов
/ 11 мая 2018

В Джерси или Dropwizard вы можете иметь свою собственную реализацию javax.ws.rs.container.ContainerRequestFilter, где вы можете получить объект URIInfo из javax.ws.rs.container.ContainerRequestContext и преобразовать QueryParameters в любой объект, который вам нужен, и установить его обратно в javax.ws.rs.container.ContainerRequestContext.

Таким образом, вы можете получить критерии в виде компонента в вашем классе ресурсов.

0 голосов
/ 11 мая 2018

Это будет зависеть от ваших библиотек, но стандартный javax.servlet.ServletRequest класс имеет метод Map<String, String[]> getParameterMap():

Возвращает:

неизменяемый Java.util.Map, содержащий имена параметров в качестве ключей и значения параметров в качестве значений карты.Ключи в карте параметров имеют тип String.Значения в карте параметров имеют тип String array.

После этого это простой сценарий Map to Bean, который может быть реализован с помощью большинства инструментов отображения bean-компонентов, таких как Orika Mapper или Commons BeanUtils .Вы можете попробовать использовать последнее с:

BookCriterias bc = new BookCriterias();
BeanUtils.populate(bc, request.getParamterMap());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...