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

时间:2012-07-02 13:06:23

标签: java spring rest spring-mvc

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

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

这映射在以下URI上(很好):/user

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

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

感谢任何帮助。

感谢。 尤金。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

有三种用例:

  1. bla是一个已知参数,您可以明确允许/禁止。
  2. bla是未知参数,可以忽略。
  3. 您希望以特殊方式处理具有未知参数的请求(例如,抛出错误)。
  4. 前两个可以在spring mvc中完成。第三个,AFAIK,不能。

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