Spring MVC请求映射显式禁止参数
问题内容:
我遇到了Spring(3.1)映射难题:我有一个简单的findAll方法:
@RequestMapping( method = RequestMethod.GET )
@ResponseBody
public List< User > findAll(){
return findAllInternal();
}
这将映射以下URI(这是很好)/user
。
但是,它也映射到:/user?bla=8
,这不好。
有没有一种方法可以明确指定此特定映射不包含任何参数的事实?我尝试在中指定params
,@RequestMapping
但看不到明确的方法。
任何帮助表示赞赏。
谢谢。
问题答案:
您可以否定@RequestMapping.param
属性中的参数。
@RequestMapping( method = RequestMethod.GET, params = "!bla")
从Spring 3.1开始,您不能明确禁止请求具有参数。
但是说实话,这几乎没有必要。
有三种用例:
bla
是可以显式允许/禁止的已知参数。bla
是未知参数,可以忽略。- 您想以特殊方式处理参数未知的请求(例如,引发错误)。
前两个可以在spring mvc中完成。第三个是AFAIK,不能。
第三个选项也有潜在的危险,因为您必须非常小心客户端可以发送给服务器的参数(例如安全框架添加的内容等)。