Struts 2重构代码以避免OGNL静态方法访问

2023-12-06

Struts 2, 2.3.20 提到

将禁用对从表达式访问静态方法的支持 很快,请考虑重构您的应用程序,以避免进一步 问题!

我们在验证器中使用了 OGNL 静态调用:

@ExpressionValidator(
 expression = "@foo.bar@isValidAmount(amount)",
 key = "validate.amount.is.not.valid"),

我们也在标签中使用了它

<s:set var="test"
value="@foo.bar@sampleMethod(#attr.sampleObject.property1)" />

那么,重构上述两种用法的最佳方法是什么?!


在您的代码中,您正在使用静态方法调用。最好的方法是在操作类中创建一个方法来包装静态方法并在 OGNL 中使用它。

public class Wrapper {
  public boolean isValidAmount(amount){
     return foo.barr.isValidAmount(amount);
  }
  public Object sampleMethod(Object property1){
     return foo.barr.sampleMethod(Object property1);
  }

}

一旦操作 bean 位于值堆栈中,您就可以使用

@ExpressionValidator(
 expression = "isValidAmount(amount)",
 key = "validate.amount.is.not.valid"),

或者在 JSP 中

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

Struts 2重构代码以避免OGNL静态方法访问 的相关文章

随机推荐

  • 导入 Microsoft Access 数据库时保留自动编号列的值

    我尝试以编程方式将多个表从 Microsoft SQL Server 导入到 Microsoft Access 每个 SQL Server 表都有一个标识列 相应的 Access 表也有一个自动编号列 现在我想生成 SQL 脚本以将数据从
  • 在 CKEditor 中使用内联编辑将数据保存到 PHP / Mysql

    我想使用新的 CKEditor 4 的 内联编辑 http docs ckeditor com guide dev inline section 2 但找不到任何如何使用 PHP MySQL 保存数据的示例 你能帮助我吗 您需要一些 AJA
  • 将 foreach 拆分为页面

    files glob docs xml foreach files as file xml new SimpleXMLElement file 0 true echo tr td xml gt doctype td td a href ba
  • 使用一行代码合并两个具有不同索引的数据帧,同时保留主数据帧的索引

    我有两个数据框 第一个 df1 是 df1 pd DataFrame col1 0 1 col2 0 1 df1 df1 rename index k v for k v in zip 0 1 zero one print df1 col1
  • 订阅事件时执行函数

    当有人订阅我在课堂上制作的事件时 是否可以执行一些代码 简短的说明 我需要配置一台外部电脑 以便在有人订阅此事件时向我发送数据 这样当收到该数据时 我可以抛出该事件 public class test public event EventH
  • Cos(90) 返回一个非常接近 0 的值,但我需要 0?

    temp x btm left 0 temp y btm left 1 的值 angle 90 Moving the bottom left coordinates btm left real temp x btm left cos ang
  • 需要工具提示:将Google Sheet现有数据更改为DataTable

    Problem 我看到的所有文档都使用 DataTable 将数据写入脚本本身 我需要从现有行调用此工具提示数据 我需要了解 HTML 页面和 google 工作表中嵌入图表之间的代码差异 Goal 我有一个需要自定义工具提示的散点图 我需
  • 使用预签名 URL 通过 cURL 将文件加载到 S3

    我获得了一个预签名 URL 用于在 S3 存储桶上上传文件 这是卷曲命令 curl v T dansero jpg https ss files dev s3 ap southeast 2 amazonaws com dansero jpg
  • 如何在Robot Framework中实现java库

    如何在 Eclipse 中创建库 然后将其导入 Robot FrameWork 中 我现在进行了很多搜索 但没有任何指南可以帮助我 您需要执行以下操作 创建您的 java 库 运行机器人框架jython版本时将其添加到类路径中 创建您的 j
  • 如果失败,请重试 SFTP?

    我正在使用 SSH NET 上传 但如果进程失败 我想重试 sftp 文件 我有这段代码 但我认为这不是处理重试的最佳方法 处理这个问题的最佳方法是什么 var exceptions new List
  • 在 Android AsyncTask 中获取 JSON

    我正在尝试获取 JSON 但我必须在 AsyncTask 中执行此操作 因为我在 logcat 中获取了它AndroidRuntime 18153 Caused by android os NetworkOnMainThreadExcept
  • Docker Compose 连接 ECONNREFUSED 172.18.0.4:3306

    当我使用以下命令构建项目的容器时 sudo docker build t PROJECT NAME 然后我通过这个 Docker Compose 配置下载 mysql 的镜像 db image mysql restart always po
  • 在 Windows Phone 8.1 上使用 MediaCapture 时拍摄的照片为黑色

    我正在使用 MediaCapture 捕获照片并存储它们 它可以在模拟器中运行 但当在真实手机 诺基亚 Lumia 530 上运行该应用程序时 捕获的照片只是黑色 它们具有正确的大小并且文件具有一定的字节长度 但是当显示照片时它是黑色的 请
  • 记忆游戏的 GUI 组件

    我正在做作业 所以我不要求代码 我想自己做这个 顺便说一句 我再次陷入 GUI 部分 并且代码部分没有什么问题 首先是按钮大小和图像大小 我没有使用按钮大小的方法 只是将图像设置为按钮的图标 但正如您在下面看到的 按钮不适合图像 第二件事是
  • 反序列化会导致列表条目的副本

    我想创建一个非常通用的模型层 它也可以作为 JSON 传递 一个模型应显示 RaspberryPi2 的 LED 面板 由于我希望对类进行尽可能接近现实的建模 因此我强制列表始终具有 8 8 个 LED 该类看起来像这样 public cl
  • 用子进程包装 cmd.exe

    我尝试使用以下程序在Windows下包装cmd exe 但它不起作用 它似乎在等待某些东西并且不显示任何内容 知道这里出了什么问题吗 import subprocess process subprocess Popen cmd exe sh
  • iphone sdk CGAffineTransform 获取物体的旋转角度

    我如何计算任何给定对象 即 uiimageview 的旋转角度 从技术上讲你不能 因为转换可以包括skew将图像变成平行四边形的操作 并且旋转角度不再定义 无论如何 由于旋转矩阵生成 cos x sin x 0 sin x cos x 0
  • VS2010 - 将 html 代码格式分配给 T4 (.tt) 文件

    我在 VS2010 中有一个 T4 文本模板 tt 主要用于生成 HTML 代码 基本上是一些包含和 JavaScript 是否可以指定 HTML 代码格式 颜色等 到该 tt 文件 情况 T4 想要有 更新Marcio Barcellos
  • MYSQL:如何查询JSON数组包含特定标签的位置

    MySQL 5 7 24 假设我有 3 行 如下所示 ID PK Name VARCHAR Data JSON 1 Admad label Color value Red label Age value 40 2 Saleem label
  • Struts 2重构代码以避免OGNL静态方法访问

    Struts 2 2 3 20 提到 将禁用对从表达式访问静态方法的支持 很快 请考虑重构您的应用程序 以避免进一步 问题 我们在验证器中使用了 OGNL 静态调用 ExpressionValidator expression foo ba