您的位置:首页 > 编程语言 > Java开发

JavaWeb_SpringMVC和titles的简单整合

2016-01-17 15:05 369 查看

1 tiles组件

借用百度百科介绍的概念:
Tiles 是一种JSP布局框架,主要目的是为了将复杂的jsp页面作为一个的页面的部分机能,然后用来组合成一个最终表示用页面用的,这样的话,便于对页面的各个机能的变更及维护。
Tiles使得struts在页面的处理方面多了一种选择。并且更容易实现代码的重用。

Tiles框架是建立在JSP的include指令基础上的,但它提供了比JSP的include指令更强大的功能。Tiles框架具有如下特性:

1. 创建可重用的模板

2. 动态构建和装载页面

3. 定义可重用的Tiles组件

4. 支持国际化。

2 在spring配置文件中增加对tiles的视图解析配置

<!-- Tiles3 Resolver -->
	<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver" p:order="1"/>
	<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
		<property name="definitions">
			<list>
				<value>classpath:tiles.xml</value>
			</list>
		</property>
	</bean>

3 在classpath下编写tiles文件

<!--?xml version="1.0" encoding="UTF-8"?-->  
<!DOCTYPE tiles-definitions PUBLIC  
	"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"  
	"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">  
	
<tiles-definitions>

	<!-- ↓↓↓====================layout==================↓↓↓ -->
	<!-- base -->
	<definition name="baseLayout" template="/WEB-INF/jsp/layouts/layout.jsp">
		<put-attribute name="header" value="/WEB-INF/jsp/layouts/header.jsp" />
		<put-attribute name="sidemenu" value=""/>
		<put-attribute name="body" value="" />  
		<put-attribute name="footer" value="/WEB-INF/jsp/layouts/footer.jsp" />
	</definition>
	
	<!-- minyan_sidemenu -->
	<definition name="home_sidemenu" extends="baseLayout">
		<put-attribute name="sidemenu" value="/WEB-INF/jsp/layouts/minyan_sidemenu.jsp" />
	</definition>

	<!-- 主页 -->
	<definition name="home" extends="home_sidemenu">
		<put-attribute name="body" value="/WEB-INF/jsp/admin/common/home.jsp" />
	</definition>

    
	<!-- ↑↑↑===================MinYan===================↑↑↑ -->
</tiles-definitions>


4 编写重要的layout.jsp模版

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="robots" content="noindex,nofollow">
<meta name="author" content="">
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="format-detection" content="telephone=no, email=no, address=no">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>minyan web</title>
<link href="<%=basePath%>/css/bootstrap.min.css?<%=staticTimestamp%>" rel="stylesheet" type="text/css">
<link href="<%=basePath%>/css/font-awesome.min.css?<%=staticTimestamp%>" rel="stylesheet" type="text/css">
<link href="<%=basePath%>/lib/iCheck/skins/flat/_all.css?<%=staticTimestamp%>" rel="stylesheet" type="text/css"/>
<link href="<%=basePath%>/css/bootstrap-datetimepicker.min.css?<%=staticTimestamp%>" rel="stylesheet" type="text/css">
<link href="<%=basePath%>/lib/select2/css/select2.min.css?<%=staticTimestamp%>" rel="stylesheet" type="text/css">
<link href="<%=basePath%>/css/iconfont/iconfont.css?<%=staticTimestamp%>" rel="stylesheet" type="text/css">
<link href="<%=basePath%>/css/style.css?<%=staticTimestamp%>" rel="stylesheet" type="text/css">
<link href="<%=basePath%>/css/theme.css?<%=staticTimestamp%>" rel="stylesheet" type="text/css">
<script type="text/javascript" src="<%=basePath%>/js/jquery-1.11.1.min.js?<%=staticTimestamp%>"></script>
<script type="text/javascript" src="<%=basePath%>/lib/select2/js/select2.min.js?<%=staticTimestamp%>"></script>
<script type="text/javascript" src="<%=basePath%>/js/bootstrap.min.js?<%=staticTimestamp%>"></script>
<script type="text/javascript" src="<%=basePath%>/js/bootstrap-datetimepicker.js?<%=staticTimestamp%>"></script>
<script type="text/javascript" src="<%=basePath%>/js/bootstrap-datetimepicker.ja.js?<%=staticTimestamp%>"></script>
<script type="text/javascript" src="<%=basePath%>/lib/iCheck/icheck.min.js?<%=staticTimestamp%>" ></script>
<script type="text/javascript" src="<%=basePath%>/js/common.js?<%=staticTimestamp%>"></script>
</head>
<body class="theme-1">
<tiles:insertAttribute name="header" />
<div class="row-offcanvas row-offcanvas-left">
<tiles:insertAttribute name="sidemenu" />
<div class="content">
<tiles:insertAttribute name="body" />
<tiles:insertAttribute name="footer" />
</div>
</div>
</body>
</html>
其中tiles:insertAttribute根据项目需求定制页面模版。(jsp中用的是bootstarp不需注意class属性等)

5 在controller方法的返回值返回tiles.xml文件中的name属性即可

比如:
@RequestMapping(value = "/init.do")
	public String welcome(ModelMap model, HttpServletRequest request, @ModelAttribute(value = "pagenum") String p) {

		HashMap<String, Object> params = new HashMap<String, Object>();

		// 页码
		if (StringUtils.isEmpty(p)) {
			p = "0";
		}

		List<Account> accounts = new ArrayList<Account>();
		for (int i = 0; i < 20; i++) {
			Account account = new Account(i + 1, "login:" + i, "password:" + i);
			accounts.add(account);
		}

		// 分页设定
		PaggingHolder<Account> pagenation = new PaggingHolder<Account>(accounts);
		pagenation.setPage(Integer.parseInt(p));
		pagenation.setNrOfElements(accounts.size());

		model.addAttribute("accountList", pagenation);
		model.addAttribute("searchCond", params);

		return "home";
	}
所需jar包http://download.csdn.net/detail/jwiang/9407369
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: