在Apache Tiles上找不到属性

Dav*_*cía 1 spring spring-mvc apache-tiles

我在Sprint MVC应用程序上使用Apache Tiles,我有这个tiles.xml:

<tiles-definitions>
    <definition name="defaultLayout" template="/WEB-INF/tiles/template/defaultLayout.jsp">
        <put-attribute name="title" value="" />
        <put-attribute name="header" value="/WEB-INF/tiles/template/header.jsp" />
        <put-attribute name="content" value=""/>
        <put-attribute name="footer" value="/WEB-INF/tiles/template/footer.jsp" />
    </definition>

    <definition name="home" extends="defaultLayout">
        <put-attribute name="title" value="Alsa" />
        <put-attribute name="content" value="/WEB-INF/pages/home.jsp" />
        <put-attribute name="active" value="index" />
    </definition>
</tiles-definitions>
Run Code Online (Sandbox Code Playgroud)

我要做的是使用active属性将类添加到活动菜单项.为此我在header.jsp中有这个:

<%@ taglib uri="http://tiles.apache.org/tags-tiles-extras" prefix="tilesx" %>

<tilesx:useAttribute name="active" />
Run Code Online (Sandbox Code Playgroud)

问题是每次我尝试渲染页面时都会收到此错误:

org.apache.tiles.template.NoSuchAttributeException:导入属性时出错.属性"active"为null

我究竟做错了什么?

Ken*_*man 13

这里的技巧是添加cascade=true到您的属性,以便嵌套定义和模板可用.

 <definition name="home" extends="defaultLayout">
        <put-attribute name="title"   value="Alsa" />
        <put-attribute name="content" value="/WEB-INF/pages/home.jsp" />
        <put-attribute name="active"  value="index" cascade="true"/>
    </definition>
Run Code Online (Sandbox Code Playgroud)

请参阅:https: //tiles.apache.org/framework/tutorial/advanced/nesting-extending.html