第六章:thymeleaf頁面模版-3. 處理內置對象

在這種模板開發框架裏面是不提倡使用內置對象的,可是不少的開發者依然須要使用內置對象進行處理,因此下面來看下如何在頁面中採用內置對象的方式完成。javascript

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

package cn.mldn.microboot.controller;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import cn.mldn.microboot.util.controller.AbstractBaseController;
import cn.mldn.microboot.vo.Member;

@Controller
public class MessageController extends AbstractBaseController {
@RequestMapping(value = "/message/inner", method = RequestMethod.GET)
    public String inner(HttpServletRequest request, Model model) {       
        model.addAttribute("url", "www.baidu.cn");       
        return "message/message_show_inner";
    }

}

其中model傳遞的本質就屬於request屬性範圍java

二、編寫頁面進行內容的顯示:web

src/main/view/templates/messagespring

message_show_inner.htmlsession

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
	<title>SpringBoot模板渲染</title>
	<link rel="icon" type="image/x-icon" href="/images/favicon.ico" />
	<meta http-equiv="Content-Type" content="text/html;charse=UTF-8">
</head>
<body>   
    <p th:utext="'url:' + ${url}">
    <p th:utext="'msg:' + ${msg}">    
</body>
</html>

然後此時也可使用"*{屬性名稱}"進行訪問app

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
	<title>SpringBoot模板渲染</title>
	<link rel="icon" type="image/x-icon" href="/images/favicon.ico" />
	<meta http-equiv="Content-Type" content="text/html;charse=UTF-8">
</head>
<body>   
    <p th:utext="'url:' + *{url}">
    <p th:utext="'msg:' + *{msg}">    
</body>
</html>

三、修改程序如今傳遞三種屬性範圍:框架

@RequestMapping(value = "/message/inner", method = RequestMethod.GET)
	public String inner(HttpServletRequest request, Model model) {
		request.setAttribute("requestMessage", "mldnjava-request");
		request.getSession().setAttribute("sessionMessage", "mldnjava-session");
		request.getServletContext().setAttribute("applicationMessage",
				"mldnjava-application");
		model.addAttribute("url", "www.mldn.cn");
		request.setAttribute("url2",
				"<span style='color:red'>www.mldn.cn</span>");
		return "message/message_show_inner";
	}
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
	<title>SpringBoot模版渲染</title>
	<script type="text/javascript" th:src="@{/js/main.js}"></script> 
	<link rel="icon" type="image/x-icon" href="/images/mldn.ico"/>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
</head>
<body>
	<p th:text="'requestMessage = ' + ${requestMessage}"/>
	<p th:text="'sessionMessage = ' + ${session.sessionMessage}"/>
	<p th:text="'applicationMessage = ' + ${application.applicationMessage}"/>
</body>
</html>

四、然後在頁面之中若是想要訪問不一樣屬性範圍中的內容,則能夠採用以下的作法完成ui

<p th:text="'requestMessage = ' + ${requestMessage}"/>
<p th:text="'sessionMessage = ' + ${session.sessionMessage}"/>
<p th:text="'applicationMessage = ' + ${application.applicationMessage}"/>

thymeleaf 考慮到了實際的開發狀況,由於 request 傳遞屬性是最爲經常使用的,可是 session 也有可能
使用,例如:用戶登陸以後須要顯示用戶 id,那麼就必定要使用到 session,因此如今必須增長屬性範圍的
形式後纔可以正常使用。在 thymeleaf 裏面也支持有 JSP 內置對象的獲取操做,不過通常不多這樣使用。
 url

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

如今會將全部可能顯示出的內容所有從新作了一個模板的從新的改寫

相關文章
相關標籤/搜索