天天看點

《精通Spring MVC 4》——2.6 Spring表達式語言

本節書摘來自異步社群《精通spring mvc 4》一書中的第2章,第2.6節,作者:【美】geoffroy warin著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

當使用“${}”文法時,我們實際上使用的是spring表達式語言(spring expression language,spel)。關于el,有多個不同的變種,而spel是其中威力強大的一種。

表2-2是它主要特性的概覽。

《精通Spring MVC 4》——2.6 Spring表達式語言

spel的用處并不僅限于視圖之中,可以将它用在spring架構的各種地方,例如,在通過@value注解往bean中注入屬性時,也可以使用spel。

從請求參數中擷取資料

我們已經能夠在視圖中展現來自服務端的資料,但是,如果想擷取使用者的輸入該怎麼辦呢?根據http協定,有很多方式可以實作這一點,其中最簡單的就是傳遞查詢參數到url之中。

《精通Spring MVC 4》——2.6 Spring表達式語言

你肯定早就知道什麼是查詢參數了吧,它們會位于url的“?”字元後面,是由名稱和值所組成的清單,每一項會使用“&”符号進行分割,例如:page?var1= value1&var2=value2。

可以使用這項技術要求使用者提供他們的名字,再次修改hellocontroller類,如下所示:

如果此時導航至localhost:8080/?name=geoffroy,将會看到如圖2-5所示的結果。

《精通Spring MVC 4》——2.6 Spring表達式語言

圖2-5

預設情況下,請求參數是強制要求存在的。這意味着,如果導航至localhost:8080,那麼将會看到一個錯誤頁面。

查閱一下@requestparam的代碼,可以看到除了value屬性以外,它還有其他兩個可用的屬性:required和defaultvalue。

是以,可以修改一下代碼,為其指定一個預設值或者将其設定為非必填項:

《精通Spring MVC 4》——2.6 Spring表達式語言

在java 8中,我們可以不指定value參數。如果這樣的話,将會使用帶有注解的方法參數名稱。