将 Spring Security JspTagLib 添加到 Freemarker 模板 - 控制器单元测试的问题

2024-01-29

我已将 Springs jsp 安全标记库添加到 freemarker 模板中,因为我使用 freemarker 而不是 jsps 来查看我的 Web 应用程序。对于任何寻找如何设置它的人,我发现添加 spring 库以使用 JSP Taglibs 以确保 Freemarker 中的安全性 https://stackoverflow.com/questions/12069602/adding-spring-library-for-usage-of-jsp-taglibs-for-security-in-freemarker这是一个非常有帮助的问题。总之,将以下内容添加到您希望使用标签的 *.ftl 文件中:

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

然后假设您使用 Maven,将以下内容添加到您的 pom.xml 中:

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-taglibs</artifactId>
    <version>${spring.security.version}</version>
</dependency>

设置完成后,我运行了弹簧控制器单元测试,但它们都失败了。问题是他们需要 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>

修复此问题后,我的测试还引发了一个错误,即他们无法找到 .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]

为了解决这个问题,我还必须将 security.tld 添加到 WEB-INF/lib/。现在一切正常,但我需要在两个地方(META-INF 和 WEB-INF/lib 下的 spring-security-taglibs-3.1.3.RELEASE.jar)放置标签库 security.tld ,这不太好。

我的问题是,有谁知道如何避免在两个地方重复使用 security.tld 以便能够运行单元测试,我宁愿将其包含在 jar 文件中,而不是将其添加到 WEB-INF/lib ?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Spring Security JspTagLib 添加到 Freemarker 模板 - 控制器单元测试的问题 的相关文章

随机推荐

  • 负面清单索引? [复制]

    这个问题在这里已经有答案了 我试图理解下面的代码 node list n for i in xrange 1 numnodes 1 tmp session newobject n append tmp link n 0 n 1 具体来说 我
  • 使用 Java 终止进程

    我想知道如何 杀死 已经启动的进程 我知道 Process API 但我不确定 是否可以使用它来 杀死 已经运行的进程 例如 firefox exe 等 如果可以使用 Process API 您能指出我吗 正确的方向 如果没有 还有哪些其他
  • 通过查询字符串将对象列表传递给 MVC 控制器

    我遇到了一种情况 需要将对象列表传递给 MVC 控制器 但我不确定如何在查询字符串中格式化它 我想要这样做的原因是因为这不是一个 Web 应用程序 它是一个通过查询字符串接受数据并将其路由到执行工作的控制器的 Web 服务 因此 给定一个名
  • SQL Server - 复杂的动态数据透视列

    我有两个表 Controls 和 ControlChilds 父表结构 Create table Controls ProjectID Varchar 20 NOT NULL ControlID INT NOT NULL ControlCo
  • 如何将 __init__ 参数传递给使用 qmlRegisterType 注册的类?

    是否可以使用 qmlRegisterType 函数将 init 参数传递给注册到 QML 的 python 类 如果是这样 当在 QML 中实例化类时它们会被传递吗 我已使用 qmlRegisterType 注册了该类 但没有找到将另一个类
  • FormArray的使用和动态添加控件行

    我在尝试使用 Angular 2 和 Forms 做某事时遇到了麻烦 假设我有一个邀请列表 其中有两个字段 分别用于姓名和电子邮件 以及一个用于添加更多行的按钮 姓名 电子邮件 姓名 电子邮件 添加行 我有点知道您可以使用 FormArra
  • 如何获取

    我有一个FlowPanel 其高度是固定的 实际上是其父级高度的百分比 该高度是固定的 在此面板中 我添加了几个div元素 使用 CSS 我将其高度设置为其父级的 100 我想要做的是使用 javascript 将其宽度设置为等于其高度 我
  • 使用最新的 Android L 支持 v4 进行 Android 活动转换

    我正在为我的应用程序实现材料设计 我发现可以在此处进行活动之间的转换 http android developers blogspot com es 2014 10 implementing material design in your
  • Jquery 错误:需要对象

    这是我在 aspx 页面中的代码
  • android - 如何使文本视图滚动?

    实际上 我在文本视图中显示了一些数据 但它的一半数据超出了屏幕 所以我需要帮助来使文本视图滚动或任何其他可以向下滚动屏幕的东西 任何帮助 将不胜感激 将 TextView 放入 XML 中的 ScrollView 中 如下所示
  • Maven + Cucumber-jvm - 如何根据环境运行不同的功能子集

    我正在努力实现这一目标 我想配置一个 Maven 项目 以便它根据所选配置文件运行不同的 Cucumber 功能子集 dev pro 例如 我有几个功能文件来测试网络导航 使用标签来指定环境 PRO pro Feature Nav Pro
  • 如何使用 gdb“观察”C++ 动态数组?

    考虑以下示例 int size 10 kk new int size for int i 0 i lt size i kk i i delete kk 如何为整个阵列添加监视 我可以一一添加手表 kk 0 kk 1 但既然我知道数组的长度
  • kubectl exec 到多容器 pod 的容器中

    我在登录多容器 Pod 的一个容器时遇到问题 我从以下位置获取容器 IDkubectl describe pod
  • Symfony2:使用具有相同名称的自定义字段类型覆盖内置字段类型

    As per 本文 http symfony com doc current cookbook form create custom field type html在 Symfony 文档上 我创建了一个自定义字段类型 将其设置为servi
  • 视图框架在 viewWillAppear: 和 viewDidAppear: 之间变化

    我在我的应用程序中发现了一个奇怪的行为 其中连接IBOutlet在我的视图控制器中的调用之间有其连接的视图框架viewWillAppear and viewDidAppear 这是我的相关代码UIViewController子类 void
  • 如何使用PHP连接sql server

    我想使用PHP连接到sql server数据库 我安装了 xampp 1 7 0 php 5 2 和 SQLSRV20 我已将扩展添加到php ini我收到此错误 Warning mssql connect function mssql c
  • 如何在 vim 中使用 ctags 自动完成

    我尝试在vim中开发android项目 但是发现在ctags中查找一种方法有点无聊 有没有办法使用ctags在vim中显示自动完成列表 thanks 这是我的 ctags 版本如下 Exuberant Ctags 5 8 Copyright
  • 如何在 WireMock 中成功代理 HTTPS 端点?

    我正在编写一个内部使用 WireMock 的 HTTP 记录播放代理 并且在记录 HTTPS 目标时遇到问题 HTTP 站点工作正常 以下是我为未加密站点设置 WireMock 代理的方法 java jar var proximate wi
  • 了解每个线程的 cuda 堆内存限制

    这个问题是关于cuda中堆大小限制的 访问了有关该主题的一些问题 包括这个 内核中的新运算符 奇怪的行为 https stackoverflow com questions 13072624 new operator in kernel s
  • 将 Spring Security JspTagLib 添加到 Freemarker 模板 - 控制器单元测试的问题

    我已将 Springs jsp 安全标记库添加到 freemarker 模板中 因为我使用 freemarker 而不是 jsps 来查看我的 Web 应用程序 对于任何寻找如何设置它的人 我发现添加 spring 库以使用 JSP Tag