我必须为两个modelAttributes使用一个表单:“groupes”这是Groupe的列表,“matieres”是Matiere的列表,我知道一个表单只支持一个modelAttribute,我尝试了两个选项,但两者都没有工作,一个使用弹簧绑定标签,另一个通过将groupe和matieres包裹在一个类中, 任何想法如何解决这个问题?
@RequestMapping(method = RequestMethod.GET)
public ModelAndView showForm() {
ModelAndView mv = new ModelAndView("abs");
mv.addObject("matiere", matiereservice.findAlmatieres());
mv.addObject("groupe", groupeservice.findAllGroupes());
return mv;
}
@RequestMapping( method = RequestMethod.POST)
public String submitForm( @ModelAttribute("groupe") Groupe groupe, @ModelAttribute("matiere") Matiere matiere,
ModelMap map,
BindingResult result
) {
// BindingResult treatment
return "listeleve" ;
}
答案 0 :(得分:0)
不要单独发送这些属性,只需创建一个DTO类,其中包含List
和Groupe
类的Matiere
个字段。
public class ListeleveDTO {
private List<Groupe> groupe;
private List<Matiere> matiere;
public ListeleveDTO(List<Groupe> groupe, List<Matiere> matiere) {
// Assign to fields
}
// getters and setters
}
并将此类的实例设置为模型属性。
@RequestMapping(method = RequestMethod.GET)
public ModelAndView showForm() {
ModelAndView mv = new ModelAndView("abs");
mv.addObject("listeleveDTO", new ListeleveDTO(groupeservice.findAllGroupes(), matiereservice.findAlmatieres());
return mv;
}
@RequestMapping( method = RequestMethod.POST)
public String submitForm( @ModelAttribute("listeleveDTO") ListeleveDTO,
ModelMap map,
BindingResult result
) {
// BindingResult treatment
return "listeleve" ;
}