【问题标题】:Spring security taglib is not visible while using spring mvc integration tests使用 spring mvc 集成测试时 Spring security taglib 不可见
【发布时间】:2014-02-01 01:21:36
【问题描述】:

我正在尝试使用 MockMvc 类进行一些“集成”测试

我用:

this.mockMvc.perform(
            get("/admin"))
                    .andExpect(status().isOk())
                    .andDo(print());

但是负责生成页面的freemarker正在使用安全标签库

 <#assign security=JspTaglibs["http://www.springframework.org/security/tags"] />

maven 依赖:

  <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-taglibs</artifactId>
        <version>3.2.0.RELEASE</version>
    </dependency>

这似乎在测试时不可用.. 异常:

The following has evaluated to null or missing:
==> security  [in template "lib/abc.ftl" at line 170, column 19]

应用程序本身正在运行,但我必须使用 mvn tomcat:run-war 而不是 mvn tomcat:run 来获取 taglib。

【问题讨论】:

    标签: java maven spring-security spring-test-mvc


    【解决方案1】:

    我不得不复制

    ~/.m2/repository/org/springframework/security/spring-security-taglibs/3.2.0.RELEASE/spring-security-taglibs-3.2.0.RELEASE.jar 
    

    到我的 WEB-INF/lib 文件夹。然后我得到另一个关于 Missiong 'Tag' 类的问题,所以我不得不添加

     <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
        </dependency>
    

    复制粘贴该 jar 文件似乎是肮脏的解决方法。如果有更好的解决方案,请告诉我。

    编辑

    有一种方法可以使用 mvn tomcat7:run 而不是 run-war 来运行它,因此无需重新启动服务器即可加载标记库并刷新模板文件。只需添加

    <jarScanAllDirectoriescontextReloadable>true</jarScanAllDirectoriescontextReloadable>
    <contextReloadable>true</contextReloadable>
    

    到 pom.xml 中的 tomcat7-maven-plugin

    【讨论】:

      猜你喜欢
      • 2013-01-11
      • 2012-06-15
      • 2013-12-21
      • 2015-08-12
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      • 2021-05-17
      相关资源
      最近更新 更多