привязка параметров формы к бину с использованием только сервлетов и JSP - возможно? - PullRequest
2 голосов
/ 06 октября 2010

Я использую сервлет и JSP без фреймворка для обучения моему SCWCD. У меня есть простая форма, которую я хочу, чтобы параметры автоматически связывались с бином. Возможно ли это без написания связующего кода или использования фреймворка?

Спасибо

Ответы [ 3 ]

9 голосов
/ 08 декабря 2010

Ну, без "рамки" вы не можете сделать это.Но вы можете использовать Jakarta BeanUtils (http://commons.apache.org/beanutils/),, точнее статический метод BeanUtils.populate в вашем сервлете. Пример:

BeanUtils.populate (myBean, request.getParameterMap());

Помните: имена входных свойств должны совпадать с атрибутами bean,ок?

7 голосов
/ 06 октября 2010

Вы можете сделать это с помощью <jsp:useBean>.

<jsp:useBean id="form" class="com.example.Form" scope="request" />
<jsp:setProperty name="form" property="*" />
<jsp:include page="servletUrl" />

Будут установлены все свойства компонента, имена которых соответствуют именам параметров запроса -if any-, и компонент будет доступен как атрибут запроса в сервлете, соответствующий url-pattern из /servletUrl.

Однако вы хотели бы использовать для этого фреймворк сервлетов и / или MVC, поскольку он абстрагирует все это и дает лучший контроль над действиями и обработкой ответов. По сути, это злоупотребление JSP (как технологией представления) как контроллером (что должно быть (прямо) выполнено сервлетом).

1 голос
/ 06 октября 2010

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

Так что вы можете сделать, это перебрать ключи request.getParameterMap() и установить значения для объекта с соответствующими именами полей (через отражение)

...