Apache Tiles 2:在子定义中设置属性值ny父定义模板

时间:2014-09-10 15:42:08

标签: java apache tiles tiles2 apache-tiles

我想在html页面中显示具有适当值的< title> 元素。我有一个基本布局jsp和相应的tile定义。我想在每页的基础上设置< title> 标记的值,可能在tile定义xml中。

到目前为止,我有以下

tiles.xml:

<definition name="base" template="/WEB-INF/jsp/layouts/base.jsp">
    <put-attribute name="page-title" value="" />
</definition>

<definition name="home" extends="base">
    <put-attribute name="page-title" value="Homepage" />
</definition>

base.jsp:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title><tiles:insertAttribute name="title" ignore="true" /></title>

    ...

不显示在home定义中设置的title属性。但为什么不呢?这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您正在使用tiles属性“page-title”作为字符串,而默认行为是将其视为模板(并且找不到该模板,并且您已选择忽略该失败)。

将属性声明为type =“string”,例如

<definition name="base" template="/WEB-INF/jsp/layouts/base.jsp">
    <put-attribute name="page-title" value="" type="string"/>
</definition>

<definition name="home" extends="base">
    <put-attribute name="page-title" value="Homepage" type="string" />
</definition>

明确将该属性用作字符串,例如

<tiles:getAsString name="title" />