2012-08-23 56 views
2

我以爲你們中一個很聰明的scala人可能能夠解釋以下問題。使用Scala的好奇錯誤springmvc註釋

以下服務總是返回400(客戶端發送的請求在語法上不正確()。) - 來自springmvc的不太有用的錯誤之一,但通常在參數未正確指定時發生。但是,如果我刪除在None上執行映射的行,它將起作用。此外,如果我創建一個參考param的本地val,然後映射,而不是它也可以。

@RequestMapping(value = Array("/willfail/{param}/")) 
def willFail(@PathVariable param:String):String={ 
    println("This line never even gets executed.") 

    //Remove following line and it works. 
    None.map(_ == param) 

    //Whatever.. 
    "somepage" 
} 

這是一個有點尷尬,因爲我拖大家踢和尖叫到Scala和它是我覺得有點內疚尚屬首例。

+2

能否請您嘗試指定帕拉姆的確切名稱 - '@PathVariable(「參數」)' –

回答

1

由於正確地指出的六必居Kunjummen,它涉及到從調試信息參數名稱的重建。

在出於某種原因的None.map(_ == param)scalac存在寫入不同的參數名稱(param$1而不是param)進入調試信息(你可以用​​檢查),因此Spring MVC的不能與PATH變量參數相關聯。

作爲一種變通方法,您可以顯式地指定參數名稱(@PathVariable("param")),這也使得你的程序的工作,如果沒有調試信息編譯。

+0

感謝你們。雖然不是真正的答案我希望的;) – Andrew