【问题标题】:Spring @RequestParam and controller interfaceSpring @RequestParam 和控制器接口
【发布时间】:2015-12-11 17:18:33
【问题描述】:

我对@9​​87654323@ 的行为感到困惑。 在docs 中据说

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

如果我将@RequestParam 放在我的控制器接口上,它的value 将被完全忽略(因此如果参数名称与接收到的参数名称不同,则映射值为null),但defaultValuerequired 有效好的。

如果我将@RequestParam 放在我的控制器实现中,一切正常。

我阅读了this 的答案,但我不明白为什么有些参数有效而其他参数无效,以及为什么文档有误。

代码示例:

界面:

@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);

实现:

@Override
public List<MyObject> get(
        String userName,
        String searchValue,
        Integer someId) {
    return myService.get(userName, searchValue, someId);
}

【问题讨论】:

  • 识别“默认值和必需”是什么意思?
  • @AdamSkywalker 如果我在我的界面上写@RequestParam(defaultValue = "username", required = false),对应的参数总是值“用户名”

标签: java spring spring-mvc


【解决方案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!

【讨论】:

    猜你喜欢
    • 2018-01-17
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 2014-04-26
    相关资源
    最近更新 更多