包装器请求类的Spring控制器获取查询参数
我正在尝试使用Spring4.0构建RESTfulWeb服务 我有一个控制器:包装器请求类的Spring控制器获取查询参数,spring,controller,Spring,Controller,我正在尝试使用Spring4.0构建RESTfulWeb服务 我有一个控制器: @Controller @RequestMapping("test") public class Controller{ @RequestMapping("fetch",method=RequestMethod.GET) @ResponseStatus(value=HttpStatus.OK) @ResponseBody
@Controller
@RequestMapping("test")
public class Controller{
@RequestMapping("fetch",method=RequestMethod.GET)
@ResponseStatus(value=HttpStatus.OK)
@ResponseBody
public ResultResponse fetchController(ResultRequest req){
if((req.getName).equals("John"))
return new ResultResponse(100);
else
return new ResultResponse(0);
}
}
还有我的ResultRequest.class
public class ResultRequest{
private String name;
//getter,setter
}
如果我点击//host//contextPath/test/fetch的url?name=John
控制器将返回对象ResultResponse(100)
我的问题是,请求参数中没有@RequestParam或其他注释,
spring控制器如何知道将查询参数“name”设置为包装类的属性
结果探索
感谢Spring使用了一个接口的实现,该接口用于解析传递给处理程序方法的参数,即使用
@RequestMapping
注释的方法
其中之一是一个。它的javadoc声明
解析用@modeldattribute
注释的方法参数和句柄
从用@modeldattribute
注释的方法返回值
模型属性是从模型中获取的,或者如果可能找不到,则从模型中获取
使用默认构造函数(如果可用)创建一旦创建,
通过数据绑定用请求数据填充属性化
如果参数带有注释,也可以应用验证
@javax.validation.Valid
使用annotationNotRequired=true创建此处理程序时,任何
将非简单类型参数和返回值视为一个模型
具有或不具有@modeldattribute
Spring注册了两个这种类型的对象。一个用于处理带有@modeldattribute
注释的参数,另一个用于处理不带注释的参数
进一步阅读: