【问题标题】:Apache Tiles: how to access definition nameApache Tiles:如何访问定义名称
【发布时间】:2011-06-28 13:06:55
【问题描述】:

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

为了说明我想要做什么,看看这个解决方法:

<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 属性声明并在模板中以其他方式获取定义名称(无需一次又一次地写两次。)

【问题讨论】:

  • 你达到你想要的了吗?如果你知道怎么做,我会很感兴趣......
  • @Pierre Henry:不,我没有找到解决方案

标签: java templates jsp tiles


【解决方案1】:

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

<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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 2016-03-16
    • 1970-01-01
    相关资源
    最近更新 更多