我将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而不是控制器中执行此操作。
看起来,瓷砖组合和呈现页面的方式,这是不可能的。对吗?
这就是您使用自定义标题的方式(它适用于所有使用磁贴的页面):
在模板. 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单独定义!)