Apache Tiles:如何访问定义名称

发布于 2024-11-17 07:24:07 字数 1035 浏览 1 评论 0原文

我想将图块定义名称直接写入模板中。但我不知道如何访问定义名称。

为了说明我想要做什么,请查看此解决方法:

<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 的相关性。所以我不想在定义中写两次名称(定义 namepageId)。相反,我正在寻找一种方法来跳过 pageId 属性声明并以模板中的其他方式获取定义名称(无需一次又一次地写入两次。)

I want to write the tiles definition name direct into the templates. But I have no idea how to access the definition name.

To illustrate what I want to do have a look at this workaround:

<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>

Default Template:

<html>
...
    <tiles:useAttribute id="tiles_pageId" name="pageId" classname="java.lang.String" />
    <body id="pageId_${tiles_pageId}">
...
    </body>
</html>

This works. I can specify an attribute (pageId) in the definition, read it in the template and write it in the template output.

But you see there is a 1:1 correlation between definition name and pageId. So I do not want to write the name twice (definition name and pageId) in the definition. Instead I am looking for a way to skip the pageId attribute declaration and get the definition name somehow else in the template (without writing it twice again and again.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

请恋爱 2024-11-24 07:24:07

我认为您可以在定义中使用通配符

<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

I think you can use Wildcard in your definition

<definition extends="default" name="*">
    <put-attribute name="body" value="/WEB-INF/views/{1}.jspx"/>
    <put-attribute name="pageId" value="{1}"/>
</definition>

More info here : http://tiles.apache.org/framework/tutorial/advanced/wildcard.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文