2 model.setAttribute方法中的对象

时间:2013-10-05 07:10:35

标签: java spring jsp java-ee spring-mvc

基本上,当我请求特定的URL进行瞄准时,我有一个表格,我有一个对象'瞄准'。虽然,在形式上我有另一个对象,我希望在一个标签中从数据库中填充。这个选择标记基本上从数据库中获取所有“害虫”并填充它们。我的控制器正在设置添加2个这样的属性,我不确定它是否是正确的方法,或者一个对象在提交时会覆盖另一个。

我的控制器方法:

@RequestMapping("/sighting")
public String makeSighting(Model model, Principal principal) {

    List<Pest> pests = pestsService.getPests();
    model.addAttribute("pests", pests);
    model.addAttribute("sighting", new Sighting());

    return "sighting";
}

如果你能帮助我,那就太好了。如果需要,我也会提供表格的代码。感谢

1 个答案:

答案 0 :(得分:1)

这种方法没有错。但您可以为form

定义单个表单支持对象
class SightingForm {
Sighting sighting;
List<Pest> pests;
...
}

这可用于填充form

@RequestMapping("/sighting")
public String makeSighting(Model model, Principal principal) {

    List<Pest> pests = pestsService.getPests();
    SightingForm sightingForm = new SightingForm();
    sightingForm.setSighting(new Sighting());
    sightingForm.setPests(pests);

    model.addAttribute("sightingForm", sightingForm);

    return "sighting";
}

并在您的JSP中,使用此单sightingForm作为表单支持对象:

<form:form id="form" action="${submitUrl}" modelAttribute="sightingForm" method="POST">
<form:input path="property" id="propertyId" />
...
</form:form>