java - Apache 瓷砖 : how to access definition name

标签 java templates jsp tiles

我想将 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 的相关性。所以我不想在定义中写两次名字(定义namepageId)。相反,我正在寻找一种方法来跳过 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/

相关文章:

java - 如何使用嵌入式 Jetty 接受 JSON POJO?

c++ - 将模板化的 std::array<std::vector<T>, N> 放入构造函数初始化列表中

c++ - 我可以只为某些特化定义静态 constexpr 数据成员吗?

java - Spring/JSP 和 Servlet - 高级访问控制

java - 如何使用 Spring-MVC 创建 "Update"/"Edit"的 SQL 语法?

java - 使用 Java JDBC 驱动程序连接到 DB2 源时出现异常

java - Intellij 警告 "StringBuffer.toString() in concatenation"

java - 从数组中删除重复项。打印 HashMap 时出错

c++ - 如果 compile-time-constant 参数错误,则生成编译时错误

Jsp、Servlet、web.xml、TomCat