2

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

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

这映射到以下 URI(这很好)/user:.

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

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

任何帮助表示赞赏。

谢谢。欧根。

4

1 回答 1

1

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

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

从 spring 3.1 开始,您不能明确禁止请求具有参数。

但老实说,这很少必要。

有三个用例:

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

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

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

于 2012-07-02T13:07:16.523 回答