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

我正在使用Spring MVC模式,我正在尝试创建一个类似于此的JSP文件 –

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

 
Datacenter Name Number of Servers IP Address(comma separated) Host Name(comma separated)
 

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

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

最初,我使用的是MultiValueMap但我不确定我的上述输入标准是如何适应这一点的? 一般来说,我不知道如何在上述用例的上述方法中构造我的输入,以便我可以在方法中轻松提取所有值?

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

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

  @RequestMapping(value = "test", method = RequestMethod.GET) public HashMap 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]; } 

一种简单的方法是定义一个模型来保存整个信息:

 public class Datacenter { private String name; private String ipAddress; private String hostName; private String numServers; // Add getters and setters.. } public class Datacenters { private List datacenters; //Getters and setters.. } 

现在,您必须通过以下方式更改表单以干净地绑定到此数据结构:

                

通过此更改,您只需以这种方式将此模型绑定到Controller:

 @RequestMapping(value = "test", method = RequestMethod.GET) public String testRequest(DataCenters dataCenters) { //.. process request } 

就是这样,Spring应该为你绑定一切。

发生状态405是因为该方法的侦听器是GET。 您需要将其更改为POST,以便它接受post。