我想将 tiles 定义名称直接写到模板中。但是我不知道如何访问定义名称。
为了说明我想做什么,请看一下这个解决方法:
<tiles-definitions>
<definition extends="default" name="index">
<put-attribute name="body" value="/WEB-INF/views/index.jspx"/>
<put-attribute name="pageId" value="index"/>
</definition>
<definition extends="default" name="login">
<put-attribute name="body" value="/WEB-INF/views/login.jspx"/>
<put-attribute name="pageId" value="login"/>
</definition>
</tiles-definitions>
默认模板:
<html>
...
<tiles:useAttribute id="tiles_pageId" name="pageId" classname="java.lang.String" />
<body id="pageId_${tiles_pageId}">
...
</body>
</html>
这行得通。我可以在定义中指定一个属性(pageId),在模板中读取它并将其写入模板输出。
但是您会看到定义名称和 pageId
之间存在 1:1 的相关性。所以我不想在定义中写两次名字(定义name
和pageId
)。相反,我正在寻找一种方法来跳过 pageId
属性声明并在模板中以其他方式获取定义名称(无需一次又一次地编写它。)
最佳答案
我认为你可以在你的定义中使用通配符
<definition extends="default" name="*">
<put-attribute name="body" value="/WEB-INF/views/{1}.jspx"/>
<put-attribute name="pageId" value="{1}"/>
</definition>
更多信息在这里:http://tiles.apache.org/framework/tutorial/advanced/wildcard.html
关于java - Apache 瓷砖 : how to access definition name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6506904/