我正在使用带有jsp / jstl的spring mvc 3.1.0。 要将对象提交给我的控制器,我正在使用ModelAttribute注释,一切正常。 但是,当我尝试向控制器提交一个复杂的对象时,他的值为null。 这是我的对象模型:
UorgVO.java
public class UorgVO {
private String nom;
private String nomAbrege;
private UorgVO refUniteOrganisParent;
//getters&Setters..
}
并且有我的jsp页面:
<form:form method="post" action="saveUorg.html" modelAttribute="uorg" >
<table>
<tr>
<th>Nom</th>
<th>Nom abregé</th>
<th>Unité père</th>
</tr>
<tr>
<td><input type="text" path="nom" name="nom"/></td>
<td><input type="text" path="nomAbrege" name="nomAbrege"/></td>
<td>
<select id="refUniteOrganisParent"
name="refUniteOrganisParent"
path="refUniteOrganisParent">
<option value="null"> --- </option>
<c:forEach items="${listeuos}" var="uorgg" varStatus="status" >
<option value="${uorgg}">${uorgg} </option>
</c:forEach>
</select>
</td>
</tr>
</table>
<input type="submit" value="Enregistrer uorg"/>
</form:form>
我的控制器是:
@RequestMapping(value ="/saveUorg", method = RequestMethod.POST)
public ModelAndView saveUorg(@ModelAttribute("uorg") UorgVO uorg,BindingResult result) {
System.out.println("My foreign attribute is:" +uorg.getRefUniteOrganisParent());
return new ModelAndView("uorg_recherche");
}
打印值为null,但我的对象的其他属性已提交。
提前感谢您的帮助
答案 0 :(得分:1)
我解决了这个问题,我希望它会帮助其他有相同问题的用户。 通过使用ConversionServiceFactoryBean的服务。 首先,我使用'form:select'和'form:input',有我的新jsp代码:
<td><form:input path="email" type="text"/></td>
<td>
<form:select path="refUniteOrganisParent.id" items="${listeuos}" itemValue="id" itemLabel="nom"/>
</td>
如您所见,我重试了所选项目的id值。
其次我使用了这个转换器:
public class UorgConverter implements Converter<Long, UorgVO>{
@Autowired
private UorgService uo;
@Override
public UorgVO convert(Long id) {
// actions dealing with the service, to retrieve Uorg object from the id sended by the jsp page
return uorgItem;
}
}
之后我通过这样做配置我的xml文件:
<mvc:annotation-driven conversion-service="conversionService"/>
<bean id="conversionService" class="my.package.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="converter.package.location.UorgConverter"></bean>
<!--List of my converters -->
</list>
</property>
</bean>
感谢所有参与此帖的人解决问题。
Mouhie。
答案 1 :(得分:0)
如果您使用表单访问该网站,则应发送模型。最好的方法是
来自return new ModelAndView("site","uorg", new UorgVO())
。
method = GET