Spring @RequestParam和控制器接口

时间:2015-12-11 17:18:33

标签: java spring spring-mvc

我对@RequestParam(value="someValue")的行为感到困惑。 在docs,据说

  

使用控制器接口(例如,用于AOP代理)时,请确保在控制器接口上而不是在实现类上一致地放置所有映射注释(例如@RequestMapping和@SessionAttributes)。

如果我将@RequestParam放在我的控制器接口上,则value被完全忽略(因此,如果参数名称与接收的参数名称不同,则映射值为null),但是{{ 1}}和defaultValue工作正常。

如果我将required放在我的控制器实现上,一切正常。

我看了this回答,但我无法理解为什么有些参数可以正常工作而其他参数却没有,为什么文档错误。

代码示例:

接口:

@RequestParam

实现:

@RequestMapping(method = RequestMethod.GET)
List<MyObject> get(
     //works if parameter in request has name "userName", which is not correct
     @RequestParam(value = "username", required = false) String userName,
     @RequestParam(value = "searchValue", required = false) String searchValue,
     @RequestParam(value = "someId", required = false) Integer someId);

1 个答案:

答案 0 :(得分:1)

此问题最终应解决:https://jira.spring.io/browse/SPR-11055?focusedCommentId=160889&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-160889

  

Juergen Hoeller添加了评论-昨天

     

我很高兴地报告,现在该问题终于在master中解决了,及时发布了5.1 RC1!