【问题标题】:Spring + Tiles: Set page title from within the viewSpring + Tiles:从视图中设置页面标题
【发布时间】:2013-09-14 14:10:10
【问题描述】:

我正在使用 Spring MVC 3 和 Apache Tiles 3。

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

这就是我正在做的事情:

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

这里是availability.jsp:

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

这是 layout.jsp(由 base.definition 使用)

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

这会导致在渲染属性时在瓦片层中出现空指针异常。

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

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

【问题讨论】:

    标签: jsp spring-mvc apache-tiles


    【解决方案1】:

    这是您可以使用自定义标题的方式(它适用于所有使用图块的页面):

    在 template.jsp 文件中:

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

    在您的 page.jsp(在您的情况下 - availability.jsp)中使用:

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

    name = title,通过 value = PageTitle 设置页面标题。

    额外:

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

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

    【讨论】:

      【解决方案2】:

      如果 availability.jsp 在 layout.jsp 之后渲染,这是不可能的 如果您不能更改顺序,那么我建议使用 javascript 来更新 dom 中的标题元素。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-03
        • 1970-01-01
        • 2010-09-10
        • 2011-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多