栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Struts2标记中检查请求参数值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Struts2标记中检查请求参数值

编辑 :在OGNL中

""
(双引号)和
''
(单引号)之间是有区别的。

双引号将单个字符评估为字符串,而单引号将单个字符评估为字符类型。您可以将 多个 字符放在单引号中,并将其视为字符串。

没有进一步的要求范围

Map<String, String>

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 -->

Test.jsp(动作)

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

public class test extends ActionSupport{    public String letters = "abcd";    public int number = 1;}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/466578.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号