2012-05-14 108 views
1

我正在嘗試創建一個註冊表單。在這種形式中有一些字段(用戶名,密碼等),也是一個下拉列表框。我的問題是與此列表框。我設法從服務器成功檢索所有項目將被添加到列表框中,我想知道把它放在這種形式。JSP獲取/發佈Spring MVC

更具體的我有一個名爲lista的列表,其中包含我想要添加到列表框中的項目。

JSP:

<c:url var="attinto" value="/reg" /> 
<form:form modelAttribute="attribute" method="POST" action="${attinto}"> 
<table> 
    . 
      . 

    <tr> 
     <td><form:label path="researchareas">Research area:</form:label></td> 
     <td>  
      <select multiple="multiple"> 
      <c:forEach items="${researchareas}" var="researcharea">  
       <option value="${researcharea}"> ${researcharea} </option>     
      </c:forEach> 
      </select>  
     </td> 
    </tr> 

控制器:

@RequestMapping(value = "/reg", method = RequestMethod.GET) 
    public String getform(Model model) { 

     getAll(model); 
     model.addAttribute("attribute", new Reg()); 

     return "reg"; 
    } 

我在這一點上,GETALL(模型)是空隙方法類似於以下提:

 model.addAttribute("researchareas",lista); 

然後我創建一個POST方法來發送這些數據。

問題:如何在列表中添加表單中的數據(到列表框中)?我如何取回用戶將要選擇的值?

回答

2

首先,使用form:select這樣的:

<form:select path="researchareas" items="${researchareas}" multiple="true" /> 

在登記對象然後彈簧可自動地綁定相應屬性:

@RequestMapping(value = "/registration", method = RequestMethod.POST) 
public String getRegistrationForm(// 
    @ModelAttribute("registrationAttribute") Registration registration, // 
    BindingResult result, Model model) { 
    ... 
    return ... 
} 

假設登記類具有以下:

public class Registration { 
    String username; 
    String password; 
    List<String> researchareas; 

    ... corresponding getters and setters here 
} 

雖然我會將name屬性與class相同否則你必須在方法參數註釋中指定顯式名稱。

+0

Hallo Eugene.My的問題是,我想添加一個下拉列表框中的數據到lista.I沒有問題與POST(即發送數據) –

+0

所以,有什麼問題?研究列表將自動填入。我已經更新了我的答案,並提供了關於渲染選擇標籤的更多細節 –

+0

我同意這個答案@Eugene。它應該是你想要的解決方案。 –

2

請指定方法在您的表單在jsp中,也在控制器中指定method = RequestMethod.POST

還有一件事。

不應該有你的數據類型爲您的註冊類研究的列表。 嘗試給出數據類型爲字符串[]

希望這適用於你。 乾杯。