如何使用Spring MVC将多个值从表单传递到控制器?


问题内容

我正在使用Spring MVC模式,目前正在尝试制作一个像这样的JSP文件-

在表单中,我有四行,第一行仅用于标记,其他三行需要将数据放入文本框。例如,对于DC1,我将numServers在文本框中插入ipaddress值,在文本框中插入值,在文本框中插入值hostname

<form method="post" enctype="multipart/form-data">
    <table>
        <tr>
            <td>Datacenter Name</td>
            <td>Number of Servers</td>
            <td>IP Address(comma separated)</td>
            <td>Host Name(comma separated)</td>
        </tr>
        <tr>
            <td><label for="dc1">DC1</label></td>
            <td><input type="text" name="numservers" size="20"></td>
            <td><input type="text" name="ipaddress" size="60"></td>             
            <td><input type="text" name="hostname"  size="60"></td>
        </tr>
        <tr>
            <td><label for="dc1">DC2</label></td>
            <td><input type="text" name="numservers" size="20"></td>
            <td><input type="text" name="ipaddress" size="60"></td>             
            <td><input type="text" name="hostname"  size="60"></td>
        </tr>
        <tr>
            <td><label for="dc1">DC3</label></td>
            <td><input type="text" name="numservers" size="20"></td>
            <td><input type="text" name="ipaddress" size="60"></td>             
            <td><input type="text" name="hostname"  size="60"></td>
        </tr>
        <tr><td colspan="2">&nbsp;</td></tr>
    </table>
    <input type="submit">
</form>

现在,我应该在点击“提交”按钮之后读取这些值,因为我将在文本框中键入必要的值。我RequestMapping在下面的代码中使用-

@RequestMapping(value = "test", method = RequestMethod.GET)
public HashMap<String, String> testRequest(@RequestParam MultiValueMap<?, ?> allRequestParams) {

}

最初,我在使用,MultiValueMap但是我不确定我的上述输入条件如何适合于此?总的来说,我不确定如何针对上述用例在上述方法中构造输入,以便可以轻松提取该方法中的所有值?

这是我第一次开始使用Spring MVC,因此遇到了一些困难。


问题答案:

您可以将数组传递给spring控制器,如下所示:

  @RequestMapping(value = "test", method = RequestMethod.GET)
    public HashMap<String, String> testRequest(@RequestParam String[] numservers, @RequestParam String[] ipaddress, @RequestParam String[] hostname) {
    //By using array position you can determine each row
    //DC1 values
    String dc1_numServer = numservers[0];
    String dc1_ipaddres= ipaddress[0];
    String dc1_hostname= hostname[0];
    //DC2 values
    String dc2_numServer = numservers[1];
    String dc2_ipaddres= ipaddress[1];
    String dc2_hostname= hostname[1];
    //DC3 values
    String dc3_numServer = numservers[2];
    String dc3_ipaddres= ipaddress[2];
    String dc3_hostname= hostname[2];
    }