在apache tiles中使用核心库集变量

时间:2015-04-19 09:21:07

标签: jsp jstl 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>

我的问题 当我在家庭定义中的"home"名称中设置"temp"值时,我希望得到这个&#34; home&#34;标题页面和页脚页面中的值,所以我做${temp}但我找不到&#34; home&#34;值。

有可能吗? 如果是,那怎么样?

提前感谢..

2 个答案:

答案 0 :(得分:4)

您可以使用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>

答案 1 :(得分:0)

您正在Jstl代码中混合tiles核心代码。

使用

<tiles:getAsString name="temp" />

而不是

<c:set var="temp" scope="request" value="" />

参考https://tiles.apache.org/framework/tutorial/basic/pages.html