2016-07-08 106 views
1

我很難搞清楚如何將值的數組傳遞給RequestParam中的java spring控制器方法。以HTML格式傳遞String數組並提交給Java Spring Controller?

我的HTML表單如下:

<form method="post"> 
    <input type="text" name="numbers[]"> 
    <input type="submit"> 
</form> 

,我的春天控制器如下:

@RequestMapping(value="/send", method = RequestMethod.POST) 
public void sendMessage(String to[]) { 
    for(String number: to) { 
     System.out.println(number); 
    } 
} 

當我運行這個然而,它顯示了一個錯誤:

... is not applicable for the arguments

+0

也許這將有助於:http://stackoverflow.com/questions/15497738/handle-form-post-with-a-array-of-items-in-spring-mvc#15499660 –

+0

它不明確。無法理解這一點。 –

回答

1

問題是你的輸入只是一個字符串字段,所以Spring將它轉換爲一個字符串,而不是一個String數組。

解決方案是在您的表單中有幾個輸入名稱相同。 Spring自動創建數組並將其傳遞給控制器​​。

<form method="post"> 
    <input type="text" name="number"> 
    <input type="text" name="number"> 
    <input type="text" name="number"> 
    <input type="submit"> 
</form> 

控制器中的相應方法是:

public void foo(@RequestParam("number[]") List<String> to) { 
    for(String number : to) { 
     System.out.println(number); 
    } 
} 
+0

感謝您提供簡單快速的解釋。 但有沒有什麼辦法可以做到這一點,沒有多個輸入框同名? –

+0

那麼你可以使用Javascript和某種'split()'函數轉換1個字符串輸入的數據,然後在執行POST之前將結果放入查詢參數中。 –

+0

「name」屬性和「@ RequestParam」註釋中的名稱必須相同。帶括號或不帶括號。 – Alex78191

0

如果有人還在與掙扎,這是它應該怎麼做:

表單輸入:

<input name="myParam" value="1"/> 
<input name="myParam" value="4"/> 
<input name="myParam" value="19"/> 

控制器方法:

@RequestMapping 
    public String deletePlaces(@RequestParam("myParam") Long[] myParams) { 

     //myParams will have 3 elements with values 1,4 and 19 
    } 

這與String[]Integer[]Long[]相同,可能更多。 POST,GET,DELETE將以相同的方式工作。

參數名稱必須與表單輸入中的name標籤匹配。無需額外的[]需要等等。事實上,PARAM名可以中省略,如果方法參數的名稱相同的輸入名稱,所以我們可以用這樣的方法簽名結束:

@RequestMapping 
    public String deletePlaces(@RequestParam Long[] myParams) 

,它仍然可以工作

額外的東西: 現在,如果你有域模型可以說Place,你有PlaceRepository,通過提供Place#id作爲您的輸入值,Spring可以查找我們相關的對象。因此,如果我們假設上述contais用戶ID的形式輸入,價值觀,那麼我們可以簡單地寫到控制器:

public String deletePlaces(@RequestParam Place[] places) { 
    //places will be populated with related entries from database! 
} 

甜是不是?

相關問題