我计划在SpringMVC应用程序中使用apache tiles。 父模板具有动态标题和左侧栏。这些内容还需要来自数据库的模型数据。因此,每个请求都需要准备这些数据,例如用户菜单。
我不认为这些数据准备应该放在每个SpringMVC控制器的方法中。
那么,有没有好的做法呢?
答案 0 :(得分:0)
我使用全局css
和js
文件创建了默认切片定义。 yourpage.jsp
扩展了此定义并向其添加了两个文件:yourpage.js
和yourpage.css
<强> tiles.xml 强>
<tiles-definitions>
<definition name="app.base" template="/path/to/your/layout.jsp">
<put-attribute name="title" value="Not Found" />
<put-attribute name="header" value="/path/to/your/header.jsp" />
<put-attribute name="body" value="/path/to/your/sidebar.jsp" />
<put-attribute name="footer" value="/path/to/your/body.jsp" />
<put-list-attribute name="stylesheets">
<add-attribute value="/static/resources/css/bootstrap.min.css" />
<add-attribute value="/static/resources/css/global.css" />
</put-list-attribute>
<put-list-attribute name="javascripts">
<add-attribute value="/static/resources/js/jquery-2.1.4.min.js" />
<add-attribute value="/static/resources/js/global.js" />
</put-list-attribute>
</definition>
<definition name="yourpage" extends="app.base">
<put-attribute name="title" value="Your Page" />
<put-attribute name="body" value="/path/to/your/yourpage.jsp" />
<put-list-attribute name="stylesheets" inherit="true">
<add-attribute value="/static/resources/css/yourpage.css" />
</put-list-attribute>
<put-list-attribute name="javascripts" inherit="true">
<add-attribute value="/static/resources/js/yourpage.js" />
</put-list-attribute>
</definition>
</tiles-definitions>
<强> tiles.jsp 强>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles"%>
<tiles:importAttribute name="stylesheets"/>
<tiles:importAttribute name="javascripts"/>
<!DOCTYPE html>
<html lang="en">
<head>
<title>
<tiles:insertAttribute name="title">
</tiles:insertAttribute>
</title>
<!-- stylesheets-->
<c:forEach var="css" items="${stylesheets}">
<link rel="stylesheet" type="text/css" href="<c:url value="${css}"/>">
</c:forEach>
</head>
<body>
<header>
<tiles:insertAttribute name="header" />
</header>
<div class="sidebar">
<tiles:insertAttribute name="sidebar" />
</div>
<div class="body">
<tiles:insertAttribute name="body" />
</div>
<!-- scripts-->
<c:forEach var="script" items="${javascripts}">
<script src="<c:url value="${script}"/>"></script>
</c:forEach>
</body>
</html>
希望这可能有所帮助