在 Apache Tiles 中使用核心库设置变量
Using core library set variable in Apache Tiles
我有一个模板JSP页面:
<html>
<head></head>
<body>
<c:set var="temp" scope="request" value="" />
<tile:insertAttribute name="header"/>
<tile:insertAttribute name="body"/>
<tile:insertAttribute name="footer"/>
</body>
</html>
我的模板XML如下:
<tiles-definitions>
<definition name="home" extends="template">
<put-attribute name="temp" value="home" />
<put-attribute name="body" value="/WEB-INF/pages/home.jsp" />
</definition>
<definition name="template" template="/WEB-INF/templates/template.jsp">
<put-attribute name="temp" />
<put-attribute name="header" value="/WEB-INF/pages/includes/header.jsp" />
<put-attribute name="body" />
<put-attribute name="footer" value="/WEB-INF/pages/includes/footer.jsp" />
</definition>
<tiles-definitions>
我的问题:
当我在主页定义的 "temp"
名称中设置 "home"
值时,我想在页眉页和页脚页中获取此 "home"
值,所以我做 ${temp}
但我还没有找到 "home"
值。
可能吗?
如果是那么怎么办?
您可以使用 tiles
将属性打印到 JSP 并设置为请求范围变量或使用 tile:useAttribute
创建请求范围变量。例如在第一种情况下你可以做
<html>
<head></head>
<body>
<c:set var="temp" scope="request"><tile:getAsString name="temp"/></c:set>
<tile:insertAttribute name="header"/>
<tile:insertAttribute name="body"/>
<tile:insertAttribute name="footer"/>
</body>
</html>
您在 tiles
标签中混淆了 Jstl
核心标签。
使用
<tiles:getAsString name="temp" />
而不是
<c:set var="temp" scope="request" value="" />
参考https://tiles.apache.org/framework/tutorial/basic/pages.html
我有一个模板JSP页面:
<html>
<head></head>
<body>
<c:set var="temp" scope="request" value="" />
<tile:insertAttribute name="header"/>
<tile:insertAttribute name="body"/>
<tile:insertAttribute name="footer"/>
</body>
</html>
我的模板XML如下:
<tiles-definitions>
<definition name="home" extends="template">
<put-attribute name="temp" value="home" />
<put-attribute name="body" value="/WEB-INF/pages/home.jsp" />
</definition>
<definition name="template" template="/WEB-INF/templates/template.jsp">
<put-attribute name="temp" />
<put-attribute name="header" value="/WEB-INF/pages/includes/header.jsp" />
<put-attribute name="body" />
<put-attribute name="footer" value="/WEB-INF/pages/includes/footer.jsp" />
</definition>
<tiles-definitions>
我的问题:
当我在主页定义的 "temp"
名称中设置 "home"
值时,我想在页眉页和页脚页中获取此 "home"
值,所以我做 ${temp}
但我还没有找到 "home"
值。
可能吗? 如果是那么怎么办?
您可以使用 tiles
将属性打印到 JSP 并设置为请求范围变量或使用 tile:useAttribute
创建请求范围变量。例如在第一种情况下你可以做
<html>
<head></head>
<body>
<c:set var="temp" scope="request"><tile:getAsString name="temp"/></c:set>
<tile:insertAttribute name="header"/>
<tile:insertAttribute name="body"/>
<tile:insertAttribute name="footer"/>
</body>
</html>
您在 tiles
标签中混淆了 Jstl
核心标签。
使用
<tiles:getAsString name="temp" />
而不是
<c:set var="temp" scope="request" value="" />
参考https://tiles.apache.org/framework/tutorial/basic/pages.html