0

我正在使用带有 jsp/jstl 的 spring mvc 3.1.0。要将对象提交给我的控制器,我使用了 ModelAttribute 注释并且一切正常。但是,当我尝试向我的控制器提交一个复杂对象时,他的值为空。这是我的对象模型:

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,但是我的对象的其他属性都提交了。

提前感谢您的帮助

4

2 回答 2

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>

感谢所有参与此帖子以解决问题的人。

穆希。

于 2013-07-05T11:09:37.253 回答
0

如果你带着表格去网站,你应该发送模型。最好的方法是 return new ModelAndView("site","uorg", new UorgVO())从你的控制器那里method = GET

于 2013-07-03T15:38:06.737 回答