簡體   English   中英

Spring @RequestParam和控制器接口

[英]Spring @RequestParam and controller interface

我對@RequestParam(value="someValue")的行為感到困惑。 據說,在文檔

使用控制器接口(例如,用於AOP代理)時,請確保在控制器接口而不是實現類上始終如一地放置所有映射注釋(例如@RequestMapping和@SessionAttributes)。

如果我將@RequestParam放在我的控制器接口上,它的value被完全忽略(因此,如果參數名稱與接收的參數名稱不同,則映射值為null ),但defaultValuerequired工作正常。

如果我將@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);

執行:

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

這最終應該得到解決: https//jira.spring.io/browse/SPR-11055?focusCommentId = 160889&page = com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-160889

Juergen Hoeller添加了評論 - 昨天

我很高興地報告,現在終於在master中解決了這個問題,及時發布了5.1 RC1!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM