thymeleaf 內置對象操作

在這種模板開發框架裏面是不提倡使用內置對象的,但是很多的開發者依然需要使用內置對象進行處理,所以下面來觀察下如何在頁面中採用內置對象的方式完成。

1.0 在控制器裏面追加一個方法 這個方法將採用內置對象的形式傳遞屬性

@RequestMapping(value = "/inner",method = RequestMethod.GET)
public String inner(HttpServletRequest request,Model model){
    request.setAttribute("msg","zwjava");
    model.addAttribute("url","www.zwjava.com");
    return  "message/message_show_inner";
}

其中 model 傳遞的本質就屬於request 屬性範圍
2.0 編寫頁面進行內容的顯示

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta  http-equiv="Content-Type"  content="text/html;charset=UTF-8" >
    <title>Title</title>
</head>
<body>
  <p th:utext="'url= '+${url}"></p>
   <!--/*@thymesVar id="msg" type="msg"*/-->
   <p th:utext="'msg ='+${msg}"></p>
</body>
</html>
  而後此時也可以使用 *{屬性名稱} 進行訪問 <p th:utext="'url='+*{url}">;

3.0 修改程序現在傳遞三種屬性範圍

  @RequestMapping(value = "/inner",method = RequestMethod.GET)
public String inner(HttpServletRequest request,Model model){
    request.setAttribute("requestMessage","zwjava-request");
    request.getSession().setAttribute("sessionMessage","session.zwjava-session");
    request.getServletContext().setAttribute("applicationMessage","application.zwjava-application");
    model.addAttribute("url","www.baidu.com");
    request.setAttribute("url2","<span style='color:red'>www.baidu.com</span>");
    return  "message/message_show_inner";
}

4.0 在頁面之中如果要想訪問不同屬性範圍中的內容 則可以採用如下的做法完成

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta  http-equiv="Content-Type"  content="text/html;charset=UTF-8" >
    <title>Title</title>
</head>
<body>
<!--/*@thymesVar id="requestMessage" type=""*/-->
<p th:text="'requestMessage='+${requestMessage}"></p>
<!--/*@thymesVar id="sessionMessage" type="session.sessionMessage"*/-->
<p th:text="'sessionMessage='+${session.sessionMessage}"></p>
<!--/*@thymesVar id="application" type="application"*/-->
<p th:text="'applicationMessage='+${application.applicationMessage}"></p>
</body>
</html>

thymeleaf 考慮到了實際的開發情況 因爲request 傳遞屬性時最爲常用的 但是Session 也有可能使用,列如用戶登錄之後需要顯示用戶id,那麼就一定要使用到Session  所以現在必須增加屬性範圍的形式後才能夠正常使用 。
5.0 實際上在thymeleaf 裏面也支持有jsp 內置對象的獲取操作 不過一般很少這樣使用

<p th:text="${#httpServletRequest.getRemoteAddr()}"></p>
<p th:text="${#httpServletRequest.getAttribute(requestMessage)}"></p>
<p th:text="${#httpSession.getId()}"></p>
<p th:text="${#httpServletRequest.getServletContext().getRealPath('/')}"></p>

githua  代碼如下   https://github.com/zhouwei520/SpringbootDemo/tree/master/demo9

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章