Я искал этот ответ сегодня на основе некоторого кода в проекте, который я унаследовал.Я обнаружил, что если вы создадите действие контроллера на multiActionController.Значения формы могут быть сопоставлены с bean-компонентом, который будет третьим параметром в вашем действии обработчика.
В моем случае у меня был такой контроллер
public void submit(HttpServletRequest request,
HttpServletResponse response, SomeBean sb) {
{
//do something with sb - SomeBean
}
Моя проблема заключалась в выяснениикак значения в моей форме были сопоставлены с действием контроллера.Там не было никакой ссылки на SomeBean в моей форме JSP.Оказывается, Spring работает с магией, основываясь на параметрах действия контроллера и именах, используемых в форме.Он в основном отображает значения в форме в bean-компонент, который используется в качестве третьего параметра в методе действия.
Например, в моем SomeBean есть поля с именами byday и bymonth.Он также имеет соответствующие методы установки и получения byday и bymonth (т.е. getBymonth (), setBymonth).В моем for my submit действие отображается на submit, и у меня есть входные значения для byday и by month, например так:
<select id="weekly_option" name="byday">
<option value="MON">Monday</option>
<option value="TUE">Tuesday</option>
<option value="WED">Wednesday</option>
<option value="THU">Thursday</option>
<option value="FRI">Friday</option>
<option value="SAT">Saturday</option>
<option value="SUN">Sunday</option>
</select>
Мне пришлось немного покопаться в том, как именно выполнялись сопоставления.Я заглянул в исходный код MultiActionController, чтобы увидеть, что если он делает следующее:
- Контроллер выясняет, есть ли у вас третий параметр в вашем действии (он не должен иметь тип HttpSession).
- Затем MultiActionController выводит экземпляр третьего параметра (SomeBean).На основе значений http-запроса он передает все значения из HttpServleRequest в объект SomeBean.
На данный момент кажется, что он работает только со свойствами, являющимися строками.Я полагаю, что вам придется как-то расширять MVC, если вы хотите работать со свойствами, отличными от строк внутри вашего компонента.