我有处理表单提交的控制器方法:
@RequestMapping(method = {RequestMethod.POST})
public String submitForm(...){...}
但是,我有一个新的测试用例:
如果Form有参数ProductData
,则调用控制器方法submitFormWithProductData
。我遇到了这方面的困难,因为ProductData
是Map
。表单标签上的网站ProductData
字段如下所示:
<input type="text" name="productData['param1']">
<input type="text" name="productData['param2']">
我不知道如何为@RequestMapping
方法创建正确的submitFormWithProductData
注释。
我试过了:
@RequestMapping(method = {RequestMethod.POST}, params="productData")
和
@RequestMapping(method = {RequestMethod.POST}, params="productData[]")
但我没有成功。
答案 0 :(得分:2)
productData
必须是模型对象的属性。
public class FormModel {
private Map<String,String> productData = ...;
...
}
根据这个你必须创建一个像这样的处理程序方法:
@RequestMapping(....)
public String submitFormWithProductData(FormModel formModel) {
....
}
Spring会自动将productData参数绑定到FormModel
对象中的相应属性。
但我不知道你为什么要以不同方式处理它。您可以添加隐藏的输入字段productDataSubmitted
并添加以下处理程序:
@RequestMapping(method = {RequestMethod.POST}, params="productDataSubmitted")
答案 1 :(得分:1)
在控制器方法中使用@RequestBody Map<String,String> productData
作为参数。
例如:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes="application/json")
public void submitForm(@RequestBody Map<String,String> productData, Model model) {
// implementation omitted
}