閱讀789 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

本節書摘來自異步社區《精通Spring MVC 4》一書中的第2章,第2.6節,作者:【美】Geoffroy Warin著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看

2.6 Spring表達式語言

當使用“${}”語法時,我們實際上使用的是Spring表達式語言(Spring Expression Language,SpEL)。關於EL,有多個不同的變種,而SpEL是其中威力強大的一種。

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

screenshot
SpEL的用處並不僅限於視圖之中,可以將它用在Spring框架的各種地方,例如,在通過@Value注解往bean中注入屬性時,也可以使用SpEL。

從請求參數中獲取數據
我們已經能夠在視圖中展現來自服務端的數據,但是,如果想獲取用戶的輸入該怎麼辦呢?根據HTTP協議,有很多方式可以實現這一點,其中最簡單的就是傳遞查詢參數到URL之中。

screenshot

你肯定早就知道什麼是查詢參數了吧,它們會位於URL的“?”字符後麵,是由名稱和值所組成的列表,每一項會使用“&”符號進行分割,例如:page?var1= value1&var2=value2。
可以使用這項技術要求用戶提供他們的名字,再次修改HelloController類,如下所示:

@Controller
public class HelloController {

    @RequestMapping("/")
    public String hello(@RequestParam("name") String userName, Model
model) {
        model.addAttribute("message", "Hello, " + userName);
        return "resultPage";
    }
}

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

screenshot

圖2-5

默認情況下,請求參數是強製要求存在的。這意味著,如果導航至localhost:8080,那麼將會看到一個錯誤頁麵。

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

因此,可以修改一下代碼,為其指定一個默認值或者將其設置為非必填項:

@Controller
public class HelloController {

    @RequestMapping("/")
    public String hello(@RequestParam(defaultValue = "world") String
name, Model model) {
        model.addAttribute("message", "Hello, " + name);
        return "resultPage";
    }
}

screenshot

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

最後更新:2017-05-27 15:31:34

  上一篇:go  怎麼樣提高手機網站的用戶瀏覽體驗
  下一篇:go  《精通Spring MVC 4》——2.5 Spring MVC架構