Stu*_*art 7 java spring freemarker jsp-tags spring-security
我已经将spring jsp security taglib添加到freemarker模板,因为我使用freemarker来查看我的web应用程序而不是jsps.对于任何搜索如何进行设置的人,我发现添加弹簧库以便在Freemarker中使用JSP Taglibs以获得安全性是一个非常有用的问题.总之,将以下内容添加到您希望使用标记的*.ftl文件中:
<#assign security=JspTaglibs["http://www.springframework.org/security/tags"] />
Run Code Online (Sandbox Code Playgroud)
然后假设您正在使用maven将以下内容添加到您的pom.xml:
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>${spring.security.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
一旦我设置了它,我运行了我的弹簧控制器单元测试,他们都失败了.问题是他们需要el-api.jar和jsp-api.jar来解决如何呈现Jsp标签.它们作为Web应用程序运行的容器(tomcat)的一部分包含在内,因此应用程序的正常运行不需要它们.所以我在测试范围内添加了这些作为maven依赖项.
<!-- Required for spring controller junit tests, due to use of jspTagLib for security -->
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>2.2</version>
<scope>test</scope>
</dependency>
<!-- Required for spring controller junit tests, due to use of jspTagLib for security -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
通过这个修复,我的测试也抛出了一个错误,即他们无法找到.tld文件的映射,即使在添加spring-security-taglibs maven依赖项时它也包含在内.
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is freemarker.template.TemplateModelException: No mapping defined for http://www.springframework.org/security/tags
The failing instruction (print stack trace for 2 more):
==> #assign security = JspTaglibs["http:/... [in template "global/menu.ftl" at line 1, column 1]
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我还必须将security.tld添加到WEB-INF/lib /中.现在一切正常,但我需要在两个地方安装标签库security.tld(META-INF和WEB-INF/lib下的spring-security-taglibs-3.1.3.RELEASE.jar)并不好.
我的问题是有没有人知道如何避免重复使用security.tld在两个地方只是为了能够运行单元测试,我宁愿把它包含在jar文件中而不是将它添加到WEB-INF/lib ?
| 归档时间: |
|
| 查看次数: |
2318 次 |
| 最近记录: |