检查Struts2标签中的请求参数值

2023-12-11

我的jsp中有以下代码:

<s:property value="#parameters['test']"/>
<br/><s:property value="'1'.equals(#parameters['test'])"/>

现在,如果我像这样访问此操作: 测试.action?测试=1

我得到以下信息:

1
false

想知道为什么1不等于1吗?


Edit: 之间存在差异""(双引号)和''(单引号)在 OGNL 中。

双引号将单个字符评估为字符串,而单引号将单个字符评估为字符类型。你可以把multiple单引号中的字符,它将被评估为字符串。

进一步请求范围不

Map<String, String> 

but

Map<String, String[]> 

正如下面 jsp 的最后 5 行所示。

JSP

<%@taglib prefix="s" uri="/struts-tags"%>
<!-- values from action where letters = "abcd" -->
<s:property value="letters"/><br/> <!-- Displays: abcd -->
<s:property value="letters.equals('abcd')"/><br/> <!-- Displays: true -->
<s:property value="'abcd'.compareTo('abcd')"/><br/> <!-- Displays: 0 -->
<s:property value="'abcd'.compareTo('abcd') == 0"/><br/> <!-- Displays: true -->
<s:property value="'abcd'.equals('abcd')"/><br/> <!-- Displays: true -->
<s:property value="'abcd'.equals(letters)"/><br/> <!-- Displays: true -->
<br/>
<!-- RUN with ?test=a&test2=abc appended to the url -->
<!-- Time for the numbers from action where number = 1-->
<s:property value="number"/><br/><!-- Displays: 1 -->
<s:property value="number.toString()"/><br/><!-- Displays: 1 -->
<!-- OGNL strings in certain cases must be double quoted -->
<s:property value='"1".equals(number.toString())'/><br/><!-- Displays: true -->
<!-- As we can see single quotes does automatic type conversion to Character which is then evaluates false-->
<s:property value="'1'.equals(number.toString())"/><br/><!-- Displays: false -->
<!-- here a string is compared to an integer which is false-->
<s:property value='"1".equals(number)'/><br/><!-- Displays: false -->
<br/><!-- Request Variables -->
<s:property value="#parameters['test']"/><br/><!-- Displays: a -->
<!-- a is single quoted so automatic type conversion probably converted it to a Character, which is not equal to string "a" -->
<s:property value="'a'.equals(#parameters['test'])"/><br/><!-- Displays: false -->
<!-- both are strings so equality works as expected -->
<s:property value='#parameters["test"]'/><br/><!-- Displays: a -->
<s:property value='"a".equals(#parameters["test"])'/><br/><!-- Displays: false because #parameters["test"] is a string[] and calling toString on string[] does not work -->
<!-- #parameters['test2'] now is 'abc' automatic type conversion of OGNL swill convert 'abc' to a string and so both are equal -->
<s:property value='#parameters["test2"]'/><br/>
<!-- Double quotes must be a string -->
<s:property value='"abc".compareTo(#parameters["test2"]) == 0'/><br/><!-- Displays: true -->
<!-- Single quote so automatic type conversion... string of chars is converted to String -->
<s:property value="'abc'.compareTo(#parameters['test2']) == 0"/><br/><!-- Displays: true -->
<!-- Out of curiosity I'd like to know if '1' is an Integer or a Byte -->
<s:property value="'1'.toString()"/><br/><!-- Answer: Neither it prints "class java.lang.Character" -->
<!-- 'a' is a Character however equals calls toString() -->
<!-- But the request object (and session too) is not <string, string> but <string, string[]> -->
1: <s:property value='"1".class'/><br/> <!-- class java.lang.String -->
2: <s:property value='#parameters["test"].class'/><br/> <!-- Array of string: class [Ljava.lang.String; -->
3: <s:property value='#parameters["test"][0].class'/><br/> <!-- This is what we need: class java.lang.String -->
<s:property value='#parameters["test"][0].equals("a")'/><br/> <!-- Now this works -->
<s:property value="#parameters['test'][0].equals('a'.toString())"/><br/> <!-- this is another way, leaving off the .toString results in false -->

测试.jsp(操作)

包struts2; 导入 com.opensymphony.xwork2.ActionSupport;

public class test extends ActionSupport{
    public String letters = "abcd";
    public int number = 1;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查Struts2标签中的请求参数值 的相关文章

  • Struts 2 Action 标签,检索属性

    如果我有一个典型的设置 其中包含转发到 JSP 的操作 我会像这样请求我的属性
  • 如何将 Struts 2 与 Velocity 和 Tiles 结合使用

    有人能够获得与 struts 2 一起使用的速度和图块吗 我在网上查找示例或教程时遇到一些问题 从我从邮件列表中收集到的信息来看 这似乎根本不可能 但邮件已经很旧了 https struts apache org docs tiles pl
  • Spring Security登录返回404

    我目前正在使用 Spring 框架开发我的博客 我正在实现 Spring Security 用于登录目的 一切都按预期进行 直到我提交始终返回 404 代码的登录凭据 这是我的 web xml 代码e
  • 使用后退/前进按钮时,将页面重定向到自定义页面,而不是默认显示“网页已过期”

    我正忙于一个只有一个页面的网站 只有登录后才能访问 home jsp 一旦用户使用有效会话登录 如果他按下浏览器上的后退按钮 那么他应该被重定向到login jsp如果他按下浏览器的前进按钮 则会再次出现 他应该无法到达home jsp所以
  • 在 JSP 中从 JavaScript/jQuery 调用后端 Java 方法

    我有一个 JSP 其中有一个select包含实体种类名称的列表 当我选择一个实体类型时 我需要填充另一个实体类型select包含所选实体类型的字段名称的列表 为此 我调用了一个 JavaScript 函数onchange event 在 J
  • 使用 Spring MVC 在 jar 文件中显示 jsp 页面

    我正在使用 Spring MVC 3 2 2 在 java 中开发一个 Web 应用程序 我在从 jar 文件中加载 jsp 页面时遇到问题 Spring MVC Web应用程序具有以下结构 META INF WEB INF spring
  • 从字节数组设置 img src

    我需要设置img src我在对象中拥有的字节数组的属性 img
  • 使用 jstl 进行调试 - 具体如何进行?

    我一直试图理解BalusC的回答 https stackoverflow com questions 3177733 how to avoid java code in jsp files关于可调试性 我仍然无法弄清楚 jstl 标签如何比
  • JSTL 本地日期时间格式

    我想格式化我的 Java 8LocalDateTime对象在 年月日 模式 有没有可以格式化的库 我尝试了下面的代码 但出现了转换异常
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • 如何将spring服务自动装配到jsp中?

    正如标题中提到的 我需要在我的 page jsp 中自动装配服务 我知道不建议这样做
  • 如何为用户的活动设置计时器?

    如果用户在 5 小时内停止工作 我需要执行特定的方法 假设用户已登录 但他在 5 小时内没有向数据库的特定表添加任何记录 任何时候用户将记录添加到指定的表中 该特定用户的计时器都应该重置 否则它将继续运行 如果达到 5 小时 应用程序应显示
  • 最新版本 6.* Struts2 支持 Tomcat 10 吗? [复制]

    这个问题在这里已经有答案了 最新版本 6 Struts2 支持 Tomcat 10 吗 异常启动过滤器 struts2 java lang ClassCastException class org apache struts2 dispat
  • 使用 s:select 标签在下拉菜单中使用 i18n [重复]

    这个问题在这里已经有答案了 我的 JSP 页面中有一个下拉菜单 它是通过
  • 如何在java script/jsp中查找客户端计算机名称?

    我的打印应用程序必须获取客户名称 然后打印文档 如何在java脚本或jsp中找到它 我在这里搜索过 有些人正在讨论 PHP 等等 关于运行安全小程序来获取客户端计算机名称的讨论 如果是这样 请给我一个例子来做到这一点 谢谢大家 你不能用 J
  • Spring mvc 添加多行

    我需要你的帮助 因为标题说我在从 jsp 表单插入多行时遇到问题 该代码来自该网站的答案 控制器 ModelAttribute programform public ProgramForm populatePojos Don t forge
  • 仅当 css 文件存在时才将其包含在 jsp 中

    我正在尝试使用默认 css 设计一个应用程序 我想要一个选项 我可以包含新的 css 自定义 文件来更改默认皮肤 我可以通过在 jsp 页面中引用 自定义和默认 css 来实现此目的 其中默认值将始终存在 并且可以为不同用户加载自定义 cs
  • Android:从http获取文件并存储在SDCard中

    我已经遵循了许多类似问题中所写的内容 但仍然存在问题 从jsp我得到一个pdf 如果我转到URL 浏览器会自动打开pdf jsp页面会执行类似以下操作 Gets the pdf from the database BufferedInput
  • RuntimeException:必须提供 MemberAccess 实现

    我正在使用一个访问公共字段的模板Customer像这样的对象 div div div div div div div div div div 然而 当我打电话时process on the TemplateEngine templateEn
  • Struts 2 + Sitemesh 3 集成 - FreemarkerDecoratorServlet 中的 NPE

    我将 Struts 2 版本 2 3 14 3 与 Sitemesh 3 版本 3 0 alpha 2 一起使用 并且在某些情况下遇到 NullPointerException 首先 这是我的 web xml 中的 struts2 site

随机推荐

  • Blackberry Storm 中的 GPS 经纬度问题

    我在我的应用程序中编写以下代码 它将在模拟器中成功运行 但当我尝试在我的设备中运行时 它会给出纬度和经度 0 0 0 0 问题是什么 我的代码是 public class GetLatLon extends TimerTask public
  • 具有静态引用的活动

    我正在处理由其他人编写的现有 Android 代码 它有几个内存问题 我无法理解的一个问题是这一点 在主 Activity 类中 它有一个名为 getReference 的静态方法 该方法基本上返回对名为的变量的引用mThis 现在 在on
  • Angular:DOM 中的条件元素?

    在 AngularJS 中 仅当作用域变量为 true 时 如何才能使 HTML 存在 我知道有ng show指令但这对我不起作用 因为它只会使其不可见display none 但我实际上需要的是该元素仅在计算时存在于 DOM 中 像这样的
  • 递归,将带有属性的xml文件解析为treeview c#

    我目前正在开发一个项目 其中应用程序将处理 XML 文件并将其显示到 C 中的树视图中 我正在使用 Visual Studio 10 编写此代码 我无法限制属性显示的次数 我使用 foreach 循环来循环遍历它具有的每个属性并显示它 但它
  • 非玩家对象的权限转移问题

    我正在制作一款多人游戏 我想让玩家与非玩家对象交互 任何玩家都可以更改其变换 当我与第一个加入的玩家 或主持的人 交互时 它的工作正常 但如果我尝试与另一个玩家 第二个加入的玩家 交互 则对象会返回到第一个玩家离开的位置他在 所以我尝试的是
  • 关于以 0 开头的“int”数字的澄清

    public class Test public static void main String args int i 012 System out println i 为什么输出是 10 如果数字以 0 开头 则它是基数为 8 的八进制数
  • 获取 BTreeSet 的第一个成员

    在 Rust 中 我有一个BTreeSet我用它来保持我的价值观井然有序 我有一个循环应该检索并删除该集合的第一个 最低 成员 我正在使用克隆迭代器来检索第一个成员 这是代码 use std collections BTreeSet fn
  • 如何将平面 xml 数据转换为分层数据 xml

    我必须将平面 xml 转换为分层 xml 我对这个任务一无所知 下面是转换的输入 Input p class title Article Title p p class Authors abc pqr and xyz p p class i
  • 如何从 Java Web 服务访问 .properties 文件

    我已经使用 tomcat 成功部署了 java web 服务 此 Web 服务正在访问配置文件 Properties 我已将 config properties 文件放置在以下目录中 C Program Files Apache Softw
  • ajax的刷新问题

    I used flush 在我的 php 页面中无限循环运行函数 它每秒回显一个文本 当我在浏览器中打开页面时 它可以工作 但是当我通过 jquery ajax 加载它时它没有响应 php page jquery代码 a
  • 正则表达式匹配 mm/dd/yyyy hh:mm:ss AM 或 PM

    我有一个为时间戳创建信息的程序 时间戳必须符合以下格式 MM DD YYYY HH MM SS AM or PM 例如 06 02 2016 10 14 56 AM 09 14 2014 9 16 32 PM 我需要一种方法来使用更好的正则
  • 如何检测窗口哈希的变化?

    如何检测到window location hashonchange 例如我可以这样做 if window location hash hasChanged ajax stuff else nothing no hash has been c
  • 如何使用 dbms_scheduler 每 30 分钟运行一次作业

    我正在使用oracle DB 现在我正在监视连接到我的java应用程序的oracle DB的性能 所以现在我必须定期监视数据库中活动连接的计数 假设每30分钟后如下 查询返回活跃用户的数量以及名称和数量 select osuser coun
  • 如何在单击按钮时以编程方式切换选项卡?在斯威夫图伊

    我已经在我的代码中实现了标签栏 我在第一个选项卡中看到了所有按钮 我想从该按钮以编程方式切换到第二个选项卡 当我使用 navigationView 时 它会创建另一个选项卡栏并移动到该屏幕 这会更改 swiftui 中的导航索引 struc
  • 保存 matplotlib.animation 输出 0 秒视频

    我对 matplotlib 和动画相当陌生 我使用时的动画效果很好pyplot show但当尝试使用animation save函数中 唯一输出的是带有动画初始帧的 0 秒视频 这是我的代码 plt rcParams animation f
  • 裁剪图像而不加载到内存中

    我想裁剪大尺寸的图像并尝试使用 Bitmap createBitmap 但它给出了 OOM 错误 另外 围绕 createBitmap 尝试了多种技术 但没有一个成功 现在我考虑将图像保存到文件系统并裁剪它而不将图像加载到内存中 这可能会解
  • 如何使用 Java 在 Eclipse 中使用 Web 服务 (JAX - RS) 从数据库检索数据

    我已将记录插入数据库 但不知道如何检索它 我的代码是 帐户 java package com fetch import java io Serializable import javax persistence Column import
  • 使用 sql server 2008 数据库进行表单身份验证问题

    您好 我一直在尝试弄清楚如何使用 sql 数据库设置 ASP Net 表单身份验证 我一直在尝试弄清楚如何使用 sql 数据库设置表单身份验证 因此 当我更新管理表时 它也会更新表单身份验证中的管理列表 任何想法都会有帮助谢谢 只需运行 a
  • 随机访问优先队列

    继续列表到优先队列 我正在实现一个带有随机访问的改进的priority queue template
  • 检查Struts2标签中的请求参数值

    我的jsp中有以下代码