Apache tiles V3 包含在子页面中
Apache tiles V3 includes in subpage
我正在尝试使用 Apache 磁贴构建 Web 应用程序。
我使用支持通配符的 apache tiles V3。
我的 tiles.xml 看起来是这样的:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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>
<definition name="*" template="/resources/tiles/main-layout.jsp">
<put-attribute name="main" value="/resources/templates/{1}.jsp" />
<put-attribute name="head-content" value="" />
</definition>
<definition name="*/*" template="/resources/tiles/main-layout.jsp">
<put-attribute name="main" value="/resources/templates/{1}/{2}.jsp" />
<put-attribute name="head-content" value="" />
</definition>
<definition name="*/*/*" template="/resources/tiles/main-layout.jsp">
<put-attribute name="main" value="/resources/templates/{1}/{2}/{3}.jsp" />
<put-attribute name="head-content" value="" />
</definition>
</tiles-definitions>
我有一个主页 (main-layout.jsp),其中包含标题部分和内容部分。
头部:
<head>
<link rel="stylesheet" type="text/css" href="${baseCss}" />
<link rel="stylesheet" type="text/css" href="${messages}" />
<script src="${jquery}"></script>
<script src="${jqueryui}"></script>
<script src="${jquerycookie}"></script>
<script src="${languagetoggle}"></script>
<script src="${menuJs}"></script>
<tiles:insertAttribute name="head-content" />
</head>
主要部分:
<section class="main-content">
<tiles:insertAttribute name="main" />
</section>
我的主要部分呈现正确。我可以只使用 Spring MVC 通过 /hello/world
加载文件 world.jsp
从 de hello
文件夹中加载。
不,我想在头部添加一些额外的 css 文件。
我的问题是:如何从 world.jsp 文件中做到这一点?
我已经尝试添加 tiles 属性并从 world.jsp 文件加载它:
<tiles:putAttribute name="head-content">
<spring:url value="/resources/base-theme/css/tables.css" var="tableCss" />
<link rel="stylesheet" type="text/css" href="${tableCss}">
</tiles:putAttribute>
但是没有用。当我 google 时,我总是出现在相同的页面上,在 de tiles.xml
中每个页面都被指定,但是从具有通配符支持的 tiles V3 开始就不再需要了。有人可以提示我如何完成吗?
请阅读下面的代码以了解您的理解。
我已经使用全局 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="/WEB-INF/tiles/header.jsp" />
<put-attribute name="body" value="/WEB-INF/tiles/body.jsp" />
<put-attribute name="footer" value="/WEB-INF/tiles/footer.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="body">
<tiles:insertAttribute name="body" />
</div>
<footer>
<tiles:insertAttribute name="footer" />
</footer>
<!-- scripts-->
<c:forEach var="script" items="${javascripts}">
<script src="<c:url value="${script}"/>"></script>
</c:forEach>
</body>
</html>
希望这可能对您有所帮助
我正在尝试使用 Apache 磁贴构建 Web 应用程序。 我使用支持通配符的 apache tiles V3。
我的 tiles.xml 看起来是这样的:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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>
<definition name="*" template="/resources/tiles/main-layout.jsp">
<put-attribute name="main" value="/resources/templates/{1}.jsp" />
<put-attribute name="head-content" value="" />
</definition>
<definition name="*/*" template="/resources/tiles/main-layout.jsp">
<put-attribute name="main" value="/resources/templates/{1}/{2}.jsp" />
<put-attribute name="head-content" value="" />
</definition>
<definition name="*/*/*" template="/resources/tiles/main-layout.jsp">
<put-attribute name="main" value="/resources/templates/{1}/{2}/{3}.jsp" />
<put-attribute name="head-content" value="" />
</definition>
</tiles-definitions>
我有一个主页 (main-layout.jsp),其中包含标题部分和内容部分。
头部:
<head>
<link rel="stylesheet" type="text/css" href="${baseCss}" />
<link rel="stylesheet" type="text/css" href="${messages}" />
<script src="${jquery}"></script>
<script src="${jqueryui}"></script>
<script src="${jquerycookie}"></script>
<script src="${languagetoggle}"></script>
<script src="${menuJs}"></script>
<tiles:insertAttribute name="head-content" />
</head>
主要部分:
<section class="main-content">
<tiles:insertAttribute name="main" />
</section>
我的主要部分呈现正确。我可以只使用 Spring MVC 通过 /hello/world
加载文件 world.jsp
从 de hello
文件夹中加载。
不,我想在头部添加一些额外的 css 文件。 我的问题是:如何从 world.jsp 文件中做到这一点?
我已经尝试添加 tiles 属性并从 world.jsp 文件加载它:
<tiles:putAttribute name="head-content">
<spring:url value="/resources/base-theme/css/tables.css" var="tableCss" />
<link rel="stylesheet" type="text/css" href="${tableCss}">
</tiles:putAttribute>
但是没有用。当我 google 时,我总是出现在相同的页面上,在 de tiles.xml
中每个页面都被指定,但是从具有通配符支持的 tiles V3 开始就不再需要了。有人可以提示我如何完成吗?
请阅读下面的代码以了解您的理解。
我已经使用全局 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="/WEB-INF/tiles/header.jsp" />
<put-attribute name="body" value="/WEB-INF/tiles/body.jsp" />
<put-attribute name="footer" value="/WEB-INF/tiles/footer.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="body">
<tiles:insertAttribute name="body" />
</div>
<footer>
<tiles:insertAttribute name="footer" />
</footer>
<!-- scripts-->
<c:forEach var="script" items="${javascripts}">
<script src="<c:url value="${script}"/>"></script>
</c:forEach>
</body>
</html>
希望这可能对您有所帮助