經過@ModelAttribute
註解在方法參數上,獲取請求中的值,注意所註解的參數是否有無參構造函數。下面思考一個問題,@ModelAttribute
所註解的參數究竟是必填仍是非必填。java
public void getTest(@ModelAttribute("test") Byte test){...}
在上面方法中,若是不傳test參數,會報一個錯誤,錯誤提示以下.spring
Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.lang.Byte]: No default constructor found; nested exception is java.lang.NoSuchMethodException: java.lang.Byte.<init>()
但若是參數類型Byte改爲String類型或者其餘bean的時候就沒有這個問題就不會報錯。查看代碼是由於沒有找到對應類型的無參構造函數,因此通常基礎數字對象類型都會報錯,好比Long型等。微信
總結函數
@ModelAttribute註解在方法參數上時,若是參數類型沒有無參構造函數,那這個參數是必填的,當有無參構成函數,參數是非必填的。在java 基本對象類型中,@ModelAttribute必定要指明參數名,當參數類型是一個bean的時候,它能夠按照bean的屬性一一注入。ui
歡迎關注個人微信公衆號cobs-snail,讓咱們一塊兒前進吧!!code