【问题标题】:Spring MVC null attribute in my @modelAttribute object sended to the controller我的 @modelAttribute 对象中的 Spring MVC 空属性发送到控制器
【发布时间】:2013-06-28 15:17:05
【问题描述】:

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

【问题讨论】:

  • 控制器方法的签名?上课?
  • @zeroflagL 我编辑了帖子并输入了我的控制器方法

标签: jsp spring-mvc modelattribute


【解决方案1】:

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

第二次提交表单时,控制器只获取字符串。 Spring 必须将每个参数转换为您想要的类型。它内置了简单类型的转换器,如IntegerBoolean,但不适合复杂类型,更不用说你自己的类型了。

因此,如果属性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

【讨论】:

    【解决方案2】:

    在你的控制器中,模型属性对象应该是这样的:

            @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;    
    }  
    

    【讨论】:

      猜你喜欢
      • 2016-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-03
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      相关资源
      最近更新 更多