【问题标题】:Is it possible to define a decorator directly in a JSP with Sitemesh?是否可以使用 Sitemesh 在 JSP 中直接定义装饰器?
【发布时间】:2011-07-10 18:32:15
【问题描述】:

我知道我应该在配置文件或我自己的ConfigurableSiteMeshFilter 子类中定义装饰器。例如:

public class SitemeshFilter extends ConfigurableSiteMeshFilter {

    @Override
    protected void applyCustomConfiguration(final SiteMeshFilterBuilder builder) {
        builder.addDecoratorPath("/*", "/WEB-INF/views/layouts/default.jsp");
    }
}

这对我有用,但这并不完美。我可以在 JSP 文件中直接定义要使用的装饰器吗?

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html sitemesh:decorator="layouts/default.jsp"> <!-- something like this -->
    <head>
        <title>Home</title>
        <meta content="test" name="description" />
    </head>
    <body>
        <h1>Hello world!</h1>
        ${body}
    </body>
</html>

【问题讨论】:

    标签: java jsp servlet-filters sitemesh


    【解决方案1】:

    使用元标记

    我们一直这样做。

    在您的 sitemesh.xml 中,允许页面位于名为 decorator 的元标记中,例如:

       <decorator-mappers>    
          <mapper class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper">
             <param name="property.1" value="meta.decorator"/>
             <param name="property.2" value="decorator" />
          </mapper>
      </decorator-mappers>
    

    在您的 decorators.xml 中,添加如下装饰器:

    <decorators>
       <decorator name="default" page="/WEB-INF/decorators/default.jsp" />
       <decorator name="alternative" page="/WEB-INF/decorators/alternative.jsp" />
    <decorators>
    

    然后,在您的 html 或 jsp 页面中,您可以添加一个名为 decorator 的元标记来在默认模板和替代模板之间切换:

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ page session="false" %>
    <html>
        <head>
            <meta name="decorator" content="alternative" />
            <title>Home</title>
            <meta content="test" name="description" />
        </head>
        <body>
            <h1>Hello world!</h1>
            ${body}
        </body>
    </html>
    

    希望对您有所帮助...

    【讨论】:

      猜你喜欢
      • 2011-07-16
      • 2016-10-07
      • 2014-02-14
      • 1970-01-01
      • 1970-01-01
      • 2017-02-04
      • 2016-10-09
      • 2015-02-28
      • 1970-01-01
      相关资源
      最近更新 更多