2013-07-25 56 views
2

我有一个使用注释配置的Spring MVC应用程序。我的测试控制器看起来像这样:避免POST请求导致Spring MVC中出现“400 - 错误请求”状态代码

@RequestMapping(value = "/add", method = RequestMethod.POST) 
public String addNumber(@RequestParam("name") Long someNumber) { 
    ... 
    return "redirect:/showAll/"; 
} 

当用户数据发布到该控制器并没有输入有效的龙号(“someNumber”),Spring MVC的有400回应 - 错误请求HTTP状态代码。我的应用程序没有得到机会对这个错误做出反应。

这个问题通常如何处理?

回答

3

我认为处理这个问题的最好方法是在RequestParam注释中添加一个'required'参数。

@RequestParam(value="name", required=false) 

http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/bind/annotation/RequestParam.html

+0

我仍然得到一个400错误请求状态代码 – xSNRG

+2

更有趣的是,如果我没有输入参数“名称”的东西,我会得到“HTTP状态400 - 所需的长参数'名称'不存在” (@RequestParam(value =“name”,required = false)长名称) – xSNRG

+0

刚刚用签名addNumber(@RequestParam(value =“name”)测试了这个解决方案, ,required = false)。URLs/simple/list和/ simple/list?name =将名称设置为null,/ simple/list?name = 123将名称设置为123.将使用POST进行尝试 – diafour

0

一个解决办法是宣布一个默认值的参数,然后检查,在应用程序代码:

@RequestParam(value="name", defaultValue="-1") 

或者,如果没有默认的是有道理的,只是随@ diafour的答案,你会得到一个null价值。