Spring MVC请求映射明确禁止参数

我遇到了Spring(3.1)映射难题:我有一个简单的findAll方法:

@RequestMapping( method = RequestMethod.GET ) @ResponseBody public List findAll(){ return findAllInternal(); } 

这映射在以下URI(这是好的): /user

但它也映射到: /user?bla=8 ,这不好。

有没有办法明确指出这个特定的映射不包含参数的事实? 我试图在@RequestMapping指定params ,但我看不出这样做的明确方法。

任何帮助表示赞赏。

谢谢。 尤金。

您可以否定@RequestMapping.param属性中的参数。

 @RequestMapping( method = RequestMethod.GET, params = "!bla") 

从春季3.1开始,您无法明确禁止请求获取参数。

但说实话,这很少是必要的。

有三种用例:

  1. bla是一个已知参数,您可以明确允许/禁止。
  2. bla是未知参数,可以忽略。
  3. 您希望以特殊方式处理具有未知参数的请求(例如,抛出错误)。

前两个可以在spring mvc中完成。 第三个,AFAIK,不能。

第三种选择也有潜在危险,因为您必须非常小心客户端可以发送到服务器的参数(例如安全框架添加的内容等)。