2013-06-28 63 views
0

我試圖使用@ModelAttribute送我的模型屬性控制器在我@ModelAttribute對象Spring MVC的空屬性sended控制器

我的模型包含許多屬性(字符串,整數,..)一個其中的一個對象是我想從選擇標記中檢索的對象。 問題是,當我在的ModelAttribute傳遞給控制器​​我的對象是空

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的控制器中打印內容結果時,結果爲空。 預先感謝您的幫助。

+0

控制器方法的簽名?類? – zeroflagL

+0

@zeroflagL我編輯的帖子,並把我的控制器方法 – Mouhie

回答

2

首先您的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

+0

謝謝你zeroflagL!我在做這個工作 – Mouhie

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;  
} 
相關問題