在 Apache Tiles 中使用核心库设置变量

Aka*_*vda 4 java jsp jstl tiles 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>
Run Code Online (Sandbox Code Playgroud)

我的模板 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>
Run Code Online (Sandbox Code Playgroud)

我的问题:

当我在 home 定义"home"中的"temp"name 中设置了值时,我想"home"在页眉页和页脚页中获取此值,所以我这样做了,${temp}但我还没有找到"home"值。

这是可能的?如果是,那么如何?

Rom*_*n C 5

您可以使用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>
Run Code Online (Sandbox Code Playgroud)