在以下两种方法中,哪一种首先被调用?
@RequestMapping(method = RequestMethod.POST, params="continue")
public String save(){
}
@RequestMapping(method = RequestMethod.POST, params="continuesave")
public String saveReview(){
}
POST请求中发送的参数包括:
继续, continuesave = “真”
在我的本地计算机中,方法1被调用。但是在我们的prod服务器中,方法2正在被调用。调用标准的方法是什么?
答案 0 :(得分:0)
当我尝试运行您的示例时,我收到异常java.lang.IllegalStateException: Ambiguous handler methods mapped
顺便说一下,你可以通过否定params来改变处理程序的优先级(saveReview
不会调用这两个参数):
@RequestMapping(method = RequestMethod.POST, params="continue")
public String save(){
...
}
@RequestMapping(method = RequestMethod.POST, params={"continuesave"," !continue"})
public String saveReview(){
...
}
答案 1 :(得分:0)
您应该只映射到非重叠网址。在你的情况下发生的只是未定义的行为:它可能取决于许多事情,无法安全预测(它甚至在@Dekart测试中引发异常)。
这里如果两个参数同时存在于一个请求中,你应该只有一个映射并测试控制器方法中的参数:
@RequestMapping(method = RequestMethod.POST)
public String save_req(WebRequest web) {
Map<String,String[]> param = web.getParameterMap();
if (...) { // condition for save
return save();
}
else {
saveReview();
}
}
public String save(){
}
public String saveReview(){
}