2014-02-14 25 views
2

我不知道要完美地構造我的問題,但我試圖從HTML多行窗體中獲取數據,我不想使用綁定對象和我不想在我的請求處理方法上有很多@RequestParam參數。我想表單提交返回一個int數組,但我得到以下錯誤HTTP Status 400 - Required int[] parameter 'department' is not present。我試着寫形式以同樣的方式人會做在PHP這樣的:如何處理沒有綁定對象的多行窗體在春天MVC

<form action="processForm" method="POST"> 
<select name="department[]"> 
    <option value="NONE">---SELECT---</option> 
    <c:forEach items="${departments}" var="department"> 
    <option value="${department.getId()}">${department.getName()}</option> 
    </c:forEach> 
</select> 
<select name="department[]"> 
    <option value="NONE">---SELECT---</option> 
    <c:forEach items="${departments}" var="department"> 
    <option value="${department.getId()}">${department.getName()}</option> 
    </c:forEach> 
</select> 
<select name="department[]"> 
    <option value="NONE">---SELECT---</option> 
    <c:forEach items="${departments}" var="department"> 
    <option value="${department.getId()}">${department.getName()}</option> 
    </c:forEach> 
</select> 
<select name="department[]"> 
    <option value="NONE">---SELECT---</option> 
    <c:forEach items="${departments}" var="department"> 
    <option value="${department.getId()}">${department.getName()}</option> 
    </c:forEach> 
</select> 
</form> 

我控制器請求映射方法有提前如下

@Request(value = "/form",nethod = RequestMethod.GET) 
public String renderForm(){ 
    return "form" 
} 

@Request(value = "processForm", method = RequestMethod.POST) 
public String processForm(@RequestParam("department") int [] department){ 
    for (int i=0;i<department.lenth;i++){ 
     System.out.println(department[i]); 
    } 
} 

感謝你。

+0

始終是固定的4所選擇的形式? –

+0

沒有我要添加JavaScript,以允許用戶添加儘可能多的行,因爲他們需要 – Piet

+0

如果你只是有一個或幾個變量來使用getParameterValues,它更簡單,它不能錯誤int []部門=請求。 getParameterValues(「部門」),記得從你的html中刪除[]所以name =「department」 –

回答

0

更改@RequestParam@RequestParam("department[]")

@Request(value = "processForm", method = RequestMethod.POST) 
public String processForm(@RequestParam("department[]") int [] department){ 
    for (int i=0;i<department.lenth;i++){ 
     System.out.println(department[i]); 
    } 
} 
+0

謝謝這個作品,以及解決方案@ ah-shianghan在評論中給了我 – Piet

+0

@Piet很高興我能幫上忙。我在註釋中注意到他的解決方案,但我在本地機器上設置了一個示例,並認爲不妨發佈。 –