Spring入門基礎 @RequestParam必需要加上參數名

今天一個大意的疏忽致使公司中斷服務倆個小時。只能說學spring太囫圇吞棗。橫跨了倆個版本後的spring,充分給了你自由,因而就想固然的被不起眼的bug戰勝。如今回想起來。看網上資料學spring時,都在說 java

1.直接寫@RequestParam就好了,會把請求中同名參數綁定到方法上。 spring

2.若是參數名和變量名不一致,能夠使用@RequestParam(name),告訴spring,使用指定名字入參。 服務器

這種講法明明是錯誤的。只有在debug模式編譯時,參數名纔會保留在class文件中,spring由此能夠反射綁定。咱們的應用明顯不可能在debug模式下打包。所以第一種誤人子弟啊,老師告訴你很簡單的默認值作法是錯誤的,第二種方式纔是正確的寫法。 eclipse


看一個簡單的方法。 spa

經過http://localhost:8080/test/hello?name=a調用,本機一切OK。但到服務器,死活報錯誤。緣由是本機eclipse有個編譯開關,會把變量寫入到class文件中。所以須要明確告訴Spring入參。 debug

右擊項目,選擇「屬性」,打開「屬性對話框」,選擇「Java Compiler」而後再打開的選項卡將「Add variable attributes to generated class files」取消勾選,意思是不將局部變量信息添加到類文件中 code

Request processing failed; nested exception is java.lang.IllegalArgumentException: Name for argument type [java.lang.String] not available, and parameter name information not found in class file either.
orm

public String hello( @RequestParam("name") String name){
    return name;
}
相關文章
相關標籤/搜索