gpt4 book ai didi

java - 是否可以使用 Sitemesh 直接在 JSP 中定义装饰器?

转载 作者:行者123 更新时间:2023-12-04 01:40:13 25 4
gpt4 key购买 nike

我知道我应该在配置文件或我自己的 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>

最佳答案

使用元标记

我们一直这样做。

在您的 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>

希望对您有所帮助...

关于java - 是否可以使用 Sitemesh 直接在 JSP 中定义装饰器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5227123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com