У меня есть аннотированный контроллер Spring 2.5, в котором у меня есть метод, аннотированный @RequestMapping (method = RequestMethod.GET), который выполняет некоторую логику для заполнения модели.
У меня также есть метод, аннотированный @RequestMapping (method = RequestMethod.POST), который выполняет запрос. Этот метод имеет аннотированный параметр @ModelAttribute, который содержит мою собственную форму pojo, назовем ее MyForm. У меня также есть метод инициализации для MyForm, также аннотированный @ModelAttrribute. Теперь все работает как положено: по запросу POST данные формы связываются с MyForm, и я могу обработать его.
Проблема в том, что я хочу иметь возможность предварительно заполнить форму, передав (GET) параметры запроса. Поскольку у меня есть метод @ModelAttribute для MyForm, я получаю экземпляр MyForm в моей модели, но он не заполняется, если я не использую его в качестве параметра для своего метода GET.
Почему я должен это сделать, возможно ли принудительное связывание данных в моей форме для запроса GET другим способом? Теперь я просто передаю параметр, но поскольку он уже есть в модели, мне не нужно ничего с ним делать, что приводит к ужасному неиспользуемому параметру метода.
[Редактировать: некоторые примеры кода для иллюстрации]
Контроллер, который не заполняет форму при получении запроса:
@Controller
public class MyController {
@ModelAttribute("myForm")
public MyForm createForm() {
return new MyForm();
}
@RequestMapping(method=RequestMethod.GET)
public void handlePage(Model model) {
//Do some stuff to populate the model....
}
@RequestMapping(method=RequestMethod.POST)
public void processForm(@ModelAttribute("myForm") MyForm myForm) {
//Process the form
}
}
Когда я изменяю сигнатуру метода метода handlePage, он заполняется при получении запроса ...
@RequestMapping(method=RequestMethod.GET)
public void handlePage(Model model, @ModelAttribute("myForm") MyForm myForm) {
//Do some stuff to populate the model....
}