2011-03-14 43 views
3

下面給出的測試用例顯示了一個簡單的情況,其中我有2個參數paramAparamBSpring @RequestParam不能正確處理多個變量 - 示例測試用例

  • 如果我調用/paramtest url,則調用paramtest()方法。
  • 如果我爲paramA輸入true,則調用方法aTrue()
  • 但是,當我爲paramAparamB輸入true時,將調用方法bTrueNotA()

但第三@RequestMapping呼籲A=TrueB!=true。當兩個參數都爲真時,我應該調用aTrue()

@RequestMapping("paramtest") 
@ResponseBody 
public String paramtest(){ 
    return "<html><head></head><body>" + 
       "<form action=paramtest method=post>" + 
        "paramA: <input type=text name=paramA /><br>" + 
        "paramB: <input type=text name=paramB /><br>" + 
        "<input type=submit>" + 
       "</form>" + 
      "</body></html>";  
} 

@RequestMapping(value="paramtest", params="paramA=true") 
@ResponseBody 
public String aTrue(){ 
    return "A=true"; 
} 

@RequestMapping(value="paramtest", params={"paramB=true", "paramA!=true"}) 
@ResponseBody 
public String bTrueNotA(){ 
    return "B=True; A!=true"; 
} 
+0

你使用哪個版本的彈簧? – krock 2011-03-14 08:55:24

+0

Spring MVC Version:3.0.5 – 2011-03-14 10:33:20

+0

如果將「paramA!= true」更改爲「!paramA = true」,會發生什麼? – StanislavL 2011-03-14 10:41:40

回答

1

我認爲這可能是春季的一個bug。我試着用下面的映射:

@RequestMapping(value="/paramtest", params={"paramA=true"}) 
@ResponseBody 
public String function A() { return "A"; } 

@RequestMapping(value="/paramtest", params={"paramA=true", "paramB=foobar"}) 
@ResponseBody 
public String function B() { return "B"; } 

@RequestMapping(value="/paramtest", params={"paramA=!true", "paramB=foo"}) 
@ResponseBody 
public String function C() { return "C"; } 

和使用您現有的形式與下面的參數,這是我得到的結果:被稱爲預期

paramA=true, paramB=foobar

paramA=true A()()如期望的那樣調用

paramA=not_true, paramB=foo 404頁,而不是C()。

我Tomcat的控制檯上的錯誤:

WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver 142 - No matching handler method found for servlet request: path '/paramtest', method 'POST', parameters map['paramB' -> array<String>['foo'], 'paramA' -> array<String>['not_true']] 

所有這一切都與Spring 3.0.5。請注意,myParam!=myValue僅適用於Spring 3.0.4以上(3.0.3 doc未列出該選項)。另外,我不認爲!myParam=myValue是有效的,因爲這沒有在current 3.0.5 documentation中列出。

對不起,這不是一個解決您的問題,但想分享我的調查:)

+0

我感謝您的意見。我也在他們的論壇上發佈了沒有任何迴應。我會在這裏發佈一個JIRA。知道其他人可以重新產生問題總是很好的。 – 2011-03-16 05:57:09

+0

這被確認爲JIRA中的一個錯誤:https://jira.springsource.org/browse/SPR-8059?page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#issue-tabs – 2011-03-17 00:10:04