0

我正在尝试使用 @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 是空对象,当我在 uorg.refUniteOrganisParent 的控制器中打印内容结果时,结果为空。提前感谢您的帮助。

4

2 回答 2

2

首先,您的select标签没有名称属性。

其次,当提交表单时,控制器只获取字符串。Spring 必须将每个参数转换为您想要的类型。Integer它具有用于简单类型(如or )的内置转换器Boolean,但不适用于复杂类型,更不用说您自己的类型了。

因此,如果属性refUniteOrganisParent是一个对象并且仅由单个值(option值)表示,则您需要实现一个转换器,该转换器基于该值创建一个实例:

public class StringToMyType implements Converter<String, MyType> { ...

http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/validation.html#core-convert

你需要注册你的转换器: http ://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-config-customize

于 2013-06-28T16:17:25.710 回答
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;    
}  
于 2013-08-17T09:32:00.740 回答