【发布时间】:2012-08-22 09:00:36
【问题描述】:
我使用带有 freemarker 的 spring 作为模板引擎。 Freemarker 允许使用 Jsp Taglibs,例如,通过添加
<#assign security=JspTaglibs["http://www.springframework.org/security/tags"] />
到模板,例如允许我使用什么
<@security.authorize ifNotGranted="ROLE_ADMIN">
whatever
</@security.authorize>
但是,Spring/Freemarker 找不到标签库,除非它们被添加到类路径中,所以我添加了
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>${spring.version}</version>
</dependency>
到我项目中的 pom.xml。
但无论如何,标签都找不到!我必须将 spring-security-taglibs.jar 添加到 WEB-INF/lib 文件夹中才能找到标签。
有人知道为什么必须将 jar 显式添加到 lib 文件夹中吗?就我而言,为什么它们没有被tomcat找到?
编辑@ddekany
谢谢。 stacktrace如下,如果spring-security-taglibs.jar没有复制到WEB-INF/lib目录下
No mapping defined for http://www.springframework.org/security/tags
The problematic instruction: ---------- ==> assignment:
security=JspTaglibs["http://www.springframework.org/security/tags"]
[on line 12, column 1 in home.ftl] in user-directive content.main
[on line 8, column 9 in home.ftl] in user-directive layout.global
[on line 2, column 1 in home.ftl]
---------- Java backtrace for programmers: ----------
freemarker.template.TemplateModelException:
No mapping defined for http://www.springframework.org/security/tags at
freemarker.ext.jsp.TaglibFactory.get(TaglibFactory.java:180) at
...
【问题讨论】:
-
我认为您应该在问题中包含确切的错误消息。另外,我不认为 JSP 规范说明它使用 current(?) 类加载器等来查找 taglibs (
tld-s),但我可能错了在那。
标签: spring security jsp freemarker taglib