第六章: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('/')}"/>

如今会将全部可能显示出的内容所有从新作了一个模板的从新的改写

相关文章
相关标签/搜索