我只是想知道如何传递post参数,例如跟随exxcept从html选项,通常我会得到一个语言,如PHP(POST['param'][0]...
我相信会工作)
url?param=value1¶m=value2¶m=value3
我试过了:
@RequestMapping(value="/schedule", method = RequestMethod.POST)
public void action(String[] param)
但是由于某些原因这不起作用......
任何想法都将不胜感激!
答案 0 :(得分:49)
您可以使用:
@RequestMapping(value="/schedule", method = RequestMethod.POST)
public void action(@RequestParam(value = "param[]") String[] paramValues){...}
它将检索参数paramValues
的所有值(在数组param
内)(注意value
的属性RequestParam
:它以[]
结束<) / p>
答案 1 :(得分:8)
这应该有效:
@RequestMapping(value="/schedule", method = RequestMethod.POST)
public void action(@RequestParam("param") String[] param)
答案 2 :(得分:5)
如果您知道您的参数名称,请尝试
@RequestMapping(value="/schedule", method = RequestMethod.POST)
public void action(@RequestParam("myParam") String param)
另一种方法是使用当前请求对象:
@RequestMapping(value="/schedule", method = RequestMethod.POST)
public void action(HttpServletRequest request) {
Map parameterMap = request.getParameterMap();
...
}
答案 3 :(得分:5)
如果有人仍在努力解决这个问题,那么就应该这样做:
表单输入:
<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
标记匹配。没有额外的[]
等等。实际上,如果方法参数名称与输入名称相同,则可以省略参数名称,因此我们最终可以使用这样的方法签名:
@RequestMapping
public String deletePlaces(@RequestParam Long[] myParams)
它仍然可以使用
额外的东西:
现在,如果您有域模型,请说Place
并且您有PlaceRepository
,通过提供Place#id
作为输入值,Spring可以为我们查找相关对象。因此,如果我们假设上面的表单输入包含用户ID作为值,那么我们可以简单地将其写入控制器:
public String deletePlaces(@RequestParam Place[] places) {
//places will be populated with related entries from database!
}
甜蜜不是吗?
答案 4 :(得分:4)
@RequestMapping(value="/schedule", method = RequestMethod.POST)
public void action(@RequestParam(value = "param[]") String[] paramValues {...}
当您通过jQuery发送例如ajax时,这将起作用:
$.ajax({
type: "POST",
data: { param:paramValues }
...
});
但是当你只发送包含字符串的单个元素数组时,它包含逗号“foo,baa”,Spring将拆分此String并创建包含2个元素“foo”和“baa”的数组。 所以当你的数组也有一个元素时要小心逗号。
答案 5 :(得分:0)
1,添加一个Java类作为requestBody
public class PostMembers {
private String[] members;
public String[] getMembers() {
return members;
}
public void setMembers(String[] members) {
this.members = members;
}
}
2,在控制器类中添加一个方法
@PostMapping("")
public List<SomeClass> addMember(@RequestBody PostMembers postMembers) {
// ...
}
现在您的控制器可以获取数组参数了。
3,进行卷曲测试
curl -H "Content-Type:application/json" \
-X POST -d '{"members":["item1","item2"]}' \
http://localhost:8080/api/xxx
或者如果您使用vue
axios.post(someUrl,{
members:[
'item1','item2'
]
}).then(response =>{
// ...
})