Java 请求参数可变的get过载弹簧控制器方法

Java 请求参数可变的get过载弹簧控制器方法,java,spring,spring-mvc,Java,Spring,Spring Mvc,我试图在spring中创建一个重载控制器方法,用于过滤,允许多个请求参数。我在这里找到的一些答案通过识别注释中传递的请求参数提供了一个解决方案,但是,这不足以满足我的需要,因为我接受多个参数进行筛选,并且不想将所有这些都声明为请求参数 以下是一个例子: @RequestMapping( method=RequestMethod.GET ) public List<JSONRepresentation> getJSONRepresentation( @RequestParam

我试图在spring中创建一个重载控制器方法,用于过滤,允许多个请求参数。我在这里找到的一些答案通过识别注释中传递的请求参数提供了一个解决方案,但是,这不足以满足我的需要,因为我接受多个参数进行筛选,并且不想将所有这些都声明为请求参数

以下是一个例子:

@RequestMapping( method=RequestMethod.GET )
public List<JSONRepresentation> getJSONRepresentation( 
    @RequestParam Map<String, String> filterParams ) throws ObjectNotFoundException
    {
        // DO STUFF AND FILTER ON VALID PARAMETERS.
    }

@RequestMapping(method = RequestMethod.GET)
public List<JSONRepresentation> getJSONRepresentation() throws ObjectNotFoundException
    {
        // DO STUFF AND RETURN ALL.
    }

试图实现这一点而不必向URL添加额外的值,如/filter。实际上,这样做是不可能的。您可以做的是将filterParams设置为可选,并对每种情况执行逻辑:

@RequestMapping( method=RequestMethod.GET )
public List<JSONRepresentation> getJSONRepresentation( @RequestParam(required=false) Map<String, String> filterParams ) throws ObjectNotFoundException
{
   if(filterParams != null) {
    // DO STUFF AND FILTER ON VALID PARAMETERS.
   } else {
   // DO STUFF AND RETURN ALL.
   }

}

啊,这么简单这么简单,非常感谢。嗯,看起来我说得太快了,filterParams即使未包含也不会计算为null…更改为检查是否!filterParams.isEmpty问题已解决