我正在尝试使用@modelAttribute将我的模型属性发送到控制器
我的模型包含许多属性(String,Integer,..),其中一个是我想从select标签中检索的对象。 问题是当我将modelattribute传递给控制器时,我的对象是Null
JSP:
<form:form method="post" action="saveUorg.html" modelAttribute="uorg" >
<table >
<tr>
<th>Nom</th>
<th>Nom abregé</th>
<th>timbre</th>
<th>Date début effet</th>
<th>Date fin effet</th>
</tr>
<tr>
<td><input path="nom" name="nom"/></td>
<td><input path="nomAbrege" name="nomAbrege"/></td>
<td><input path="timbre" name="timbre"/></td>
<td><input type="date" path="dateDebutEffet" name="dateDebutEffet"/></td>
<td><input type="date" path="dateFinEffet" name="dateFinEffet"/></td>
</tr>
</table>
<table >
<tr>
<th>email</th>
<th>Unité père</th>
</tr>
<tr>
<td><input path="email" name="email"/></td>
<td><select path="refUniteOrganisParent">
<option value="-"> --- </option>
<c:forEach items="${listeuos}" var="uorgg" varStatus="status" >
<option value="${uorgg}">${uorgg} </option>
</c:forEach>
</select></td>
</tr>
这是我的控制器
@RequestMapping(value ="/saveUorg", method = RequestMethod.POST)
public ModelAndView saveUorg(@ModelAttribute("uorg") UorgVO uorg,BindingResult result){
System.out.println("RefUniteOrganisParent:" +uorg.getRefUniteOrganisParent());
return new ModelAndView("view","uorg",uorg);
}
refUniteOragnisParent是null对象,当我在uorg.refUniteOrganisParent的控制器中打印内容结果时,结果为null。 提前感谢您的帮助。
答案 0 :(得分:2)
首先,您的select
代码没有名称属性。
第二,提交表单时,控制器只获取字符串。 Spring必须将每个参数转换为您想要的类型。它有内置的转换器,适用于简单类型,如Integer
或Boolean
,但不适用于复杂类型,更不用说您自己的类型了。
因此,如果属性refUniteOrganisParent
是一个对象并且只由一个值(option
值)表示,则需要实现一个基于此值创建实例的转换器:
public class StringToMyType implements Converter<String, MyType> { ...
答案 1 :(得分:0)
在您的控制器中,模型属性对象应如下所示:
@RequestMapping(value ="/saveUorg", method = RequestMethod.POST)
public ModelAndView saveUorg(@ModelAttribute("uorg") UorgVO uorg,BindingResult result){
ModelAndView mav = new ModelAndView("view");
mav.addObject("uorg",uorg);
System.out.println("RefUniteOrganisParent:" +uorg.getRefUniteOrganisParent());
return mav;
}