提问者:小点点

Spring Tiles:在视图中设置页面标题


我将SpringMVC3与Apache Tiles 3一起使用。

我想为我的一个页面添加一个自定义标题。我希望这个标题存在于特定的视图jsp中,而不是布局jsp中。

这就是我正在做的:

xml中的定义

<definition name="availability" extends="base.definition">
    <put-attribute name="title" expression="${requestScope.title}"/>
    <put-attribute name="page" value="/WEB-INF/views/availability.jsp" />
</definition>

这是可用性. jsp:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="title" value="Availability" scope="request"/>

这是布局. jsp(由base.定义使用)

<title>App::<tiles:getAsString name='title' /></title>

这会导致渲染属性时瓷砖层出现空指针异常。

当请求转到我的控制器时,我可以按照这里的建议通过模型设置标题,但我想从视图JSP而不是控制器中执行此操作。

看起来,瓷砖组合和呈现页面的方式,这是不可能的。对吗?


共2个答案

匿名用户

这就是您使用自定义标题的方式(它适用于所有使用磁贴的页面):

在模板. jsp文件中:

<title><tiles:insertAttribute name="title" /></title>

在您的page. jsp中(在您的情况下-可用性.jsp)使用以下内容:

<tiles:putAttribute name="title" value="PageTitle" />

name=title,通过值=PageTitle设置您的页面标题。

额外:

您可以将页面标题放在messages.properties文件中,然后像这样使用它:

<tiles:putAttribute name="title">
    <spring:message code="page.title"/>
</tiles:putAttribute>

匿名用户

这是不可能的,如果在布局. jsp之后呈现可用性.jsp如果您不能更改顺序,那么我建议使用javascript更新dom中的title元素。

否则,您应该寻找封装模板及其值。那就是“title”元素应该在一个名为title. jsp(或head.jsp)的模板中,并且您为每个请求使用特定的title.jsp。(您不需要为每个不同的title.jsp单独定义!)