61阅读

if函数的使用方法-struts2 s:if标签以及 #,%{},%{#}的使用方法等在资料整理

发布时间:2017-11-21 所属栏目:struts2 标签

一 : struts2 s:if标签以及 #,%{},%{#}的使用方法等在资料整理

<s:if>判断字符串的问题:

1、判断单个字符:<s:if test="#session.user.username==&#39;c&#39;">

这样是从session中取出username的值,并且判断其是否为c,但是这样判断是不正确的,这样判断的话,根本判断不出来,要改成下面这样:

<s:if test="#session.user.username==&#39;c&#39;.toString()">

这样判断才能正确判断,至于原因我也不知道,在网上看到struts2中可能它判断的是char类型。

2、判断字符串:<s:if test="#session.user.username==&#39;milo&#39;">

这样写的就是判断username是不是milo,是String的判断,这个是不用加toString()的。

3、判断数值:<s:if test="#session.user.username==0">

这样写的就是判断username是不是0,是int的判断。

B:判断为空的问题:

<s:if test="#session.user.username==null">

struts2中的判空似乎只能这么写

判断非空可以这样写:

<s:if test="#session.user.username!=null" >

ps:如果从action中取属性值,test中的属性值前面的&#39;#&#39;不需要,action中的属性与jsp中的属性是互通的。

字符串N一定要用“”双引号包含,从test的包含则用单引号 &lsquo; &rsquo;,如果相反,则不能正确判断该属性是否与该字符串相等。

正确:

<s:if test=&#39;activityBean.searchForce=="N" &#39;>

错误:

<s:if test="activityBean.searchForce==&#39;N&#39; ">

因为java是强类型语言,单引号表示char类型,只能赋给一个字符给char类型,

而双引号则表示String类型

所以我的activityBean.searchForce属性是String类型,那么N必须要用双引号

例如这个语句

要判断struts堆栈里systemSettingModel.settingValue 是否等于 "A"

写成

<s:if test="systemSettingModel.settingValue == &#39;A&#39;">...</s:if>

是不对的。

这样A被认为是字符,而systemSettingModel.settingValue是单字符的字符串,不匹配

应写成

<s:if test=&#39;systemSettingModel.settingValue == "A"&#39;>。。。 </s:if>

<s:if test="systemSettingModel.settingValue == \"A\"">... </s:if>

另外systemSettingModel.settingValue的值可以这样取得

${systemSettingModel.settingValue}

<s:property value="systemSettingModel.settingValue"/>

<s:property value="#request.systemSettingModel.settingValue"/>

#表示不在struts堆栈里,没有#表示从struts堆栈里取

Struts2堆栈

struts2中的标签“# ”,“%{ }”,“%{# }”

s:a 中的href 什么时候使用“# ” 什么时候该用“%{ }” 什么时候该用“%{# }” 什么时候用“”

s:select 中的list 什么时候使用“# ” 什么时候该用“%{ }” 什么时候该用“%{# }” 什么时候用“”

s:if 中的test 什么时候使用“# ” 什么时候该用“%{ }” 什么时候该用“%{# }” 什么时候用“”

s:iterator 中的value什么时候使用“# ” 什么时候该用“%{ }” 什么时候该用“%{# }” 什么时候用“”

s:checkboxlist 中的list 什么时候使用“# ” 什么时候该用“%{ }” 什么时候该用“%{# }” 什么时候用“”

Struts2中有值堆栈和堆栈上下文的概念,你用 <s:debug />可以看出.

S标签中用#可以取出堆栈上下文中的存放的对象.

用%{}可以取出存在值堆栈中的Action对象,直接调用它的方法.例如你的Action如果继承了ActionSupport .那么在页面标签中,用%{getText(&#39;key&#39;)}的方式可以拿出国际化信息. %{#}, 这是JSP2.1最新规范中的语法,是Struts2为其解决兼容性问题而写成%{#}的

在域对象中使用%{#}

比如%{#session.user.userName}

将获得user对象的 userName属性值

%{}强调的是从你设定的root点取

%{}用于计算表达式

如%{10+20}结果将输出30

如%{"a"+"b"}结果将输出"ab"

#通常强调从上下文取

如#parameters.name[0]等价于request.getParameter("name")

如#session.name等价于session.getAttribute("name")

如#request.name等价于request.getAttribute("name")

%{#}仍然用于计算表达式,只不过操作元可以是变量

如先定义一个变量

<s:set name="age" value="%{25}"/>

则%{#age}将输出25,也可以省略"#",写为%{age}

若将age加10,可这么写:

%{#age+10},将输出30.不能省略"#"。也就说变量用于计算时不能省略"#"

ognl中的#、%和$

#、%和$符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分。在这里笔者简单介绍它们的相应用途。

1.#符号的用途一般有三种。

1)访问非根对象属性,例如示例中的#session.msg表达式,由于Struts 2中值栈被视为根对象,所以访问其他非根对象时,需要加#前缀。实际上,#相当于ActionContext. getContext();#session.msg表达式相当于ActionContext.getContext().getSession(). getAttribute(”msg”) 。

2)用于过滤和投影(projecting)集合,如示例中的persons.{?#this.age>20}。

3)用来构造Map,例如示例中的#{&rsquo;foo1&prime;:&rsquo;bar1&prime;, &rsquo;foo2&prime;:&rsquo;bar2&prime;}。

2.%符号

%符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。如下面的代码所示:

构造Map

<s:set name=”foobar” value=”#{&rsquo;foo1&prime;:&rsquo;bar1&prime;, &lsquo;foo2&prime;:&rsquo;bar2&prime;}” />

<p>The value of key “foo1&Prime; is <s:property value=”#foobar[&#39;foo1&#39;]” /></p>

<p>不使用%:<s:url value=”#foobar[&#39;foo1&#39;]” /></p>

<p>使用%:<s:url value=”%{#foobar[&#39;foo1&#39;]}” /></p>

3.$符号

$符号主要有两个方面的用途。

在国际化资源文件中,引用OGNL表达式,例如国际化资源文件中的代码:reg.agerange=国际化资源信息:年龄必须在min同{max}之间。

在Struts 2框架的配置文件中引用OGNL表达式,例如下面的代码片断所示:

<validators>

<field name=”intb”>

<field-validator type=”int”>

<param name=”min”>10</param>

<param name=”max”>100</param>

<message>BAction-test校验:数字必须为min为{max}之间!</message>

</field-validator>

</field>

</validators

另一个很容易错误应用的问题

<s:if test="deptType==1" >下属</s:if>如果你的数据库对应的字段类型为整形,可以这样使用;

<s:if test="deptType==&#39;1&#39;" >下属</s:if>如果你的数据库对应的字段类型为char,可以这样使用;

<s:if test="deptType==&#39;aa&#39;" >下属</s:if>如果你的数据库对应的字段类型为varchar,并且数据库中的字符串都是多余一个字符的字符串,可以这样使用;

<s:if test="deptType==\"1\"" >下属</s:if><s:else>直属</s:else>(测试通过,这样用是最正确的)

我遇到的样式选中问题解决方法:

<li>

<a href="/pro/pro!productList.action?proId=${productType.id}" <s:if test="#productType.id == #parameters.productType[0]"></s:if>>${productType.typeName}</a>

</li>

二 : EXCEL中的IF与CEILING或ROUNDUP函数组合使用

日常工作中,我们经常用到IF函数,即根据不同条件,返回不同的结果。

这是某天旧同事要求帮助设置公式的实例:

1、当A2小于等于50时,取数为0;

2、当A2大于50小于等于100时,取数为1;

3、当A2大于100时,先除以100,再向上取整数。

我们可以在B2和C2中分别输入以下公式,结果是一致的。

公式一:=IF(A2<=50,"0",IF(A2<=100,"1",IF(A2>100,CEILING(A2/100,1))))

公式二:=IF(A2<=50,"0",IF(A2<=100,"1",IF(A2>100,ROUNDUP(A2/100,0))))

例表:



公式一中的CEILING函数,是截去小数向上取整的函数,通常表示为:=CEILING(A2,1),这里的1代表向上舍入为最接近的 1 的倍数,也可以是其他的数。

公式二中的ROUNDUP函数,是不管四舍五入,总是向上舍入数字,通常表示为:=ROUNDUP (A2,0),这里的0代表小数位为0,也可以是其他的位数。

总之,以上提供仅是其中的两个方法,EXCEL中的函数都可以根据计算的目的灵活使用。

三 : IF函数使用方法

IF函数使用方法

IF 请参阅

执行真假值判断,根据逻辑计算的真假值,返回不同结果。 可以使用函数 IF 对数值和公式进行条件检测。

语法

IF(logical_test,value_if_true,value_if_false)

Logical_test 表示计算结果为 TRUE 或 FALSE 的任意值或表达式。例如,A10=100 就是一个逻辑表达式,如果单元格 A10 中的值等于 100,表达式即为 TRUE,否则为 FALSE。本参数可使用任何比较运算符。

Value_if_true logical_test 为 TRUE 时返回的值。例如,如果本参数为文本字符串“预算内”而且 logical_test 参数值为 TRUE,则 IF 函数将显示文本“预算内”。如果 logical_test 为 TRUE 而 value_if_true 为空,则本参数返回 0(零)。如果要显示 TRUE,则请为本参数使用逻辑值 TRUE。Value_if_true 也可以是其他公式。

Value_if_false logical_test 为 FALSE 时返回的值。例如,如果本参数为文本字符串“超出预算”而且 logical_test 参数值为 FALSE,则 IF 函数将显示文本“超出预算”。如果 logical_test 为 FALSE 且忽略了

Value_if_false(即 value_if_true 后没有逗号),则会返回逻辑值 FALSE。如果 logical_test 为 FALSE 且 Value_if_false 为空(即 value_if_true 后有逗号,并紧跟着右括号),则本参数返回 0(零)。Value_if_false 也可以是其他公式。

说明

? 函数 IF 可以嵌套七层,用 value_if_false 及 value_if_true 参数可以构造复杂的检测条件。请参阅下面最后一个示例。 ? 在计算参数 value_if_true

后,函数 和IF 返value_if_false

回相应语句执行后的返回值。

? 如果函数 IF 的参数包含在行和列中排列的一组参数进行运算的单个公式。数组区域共用一个公式;数组常量是用作参数的一组常量。),则在执行 IF 语句时,数组中的每一个元素都将计算。

? Microsoft Excel 还提供了其他一些函数,可依据条件来分析数据。例如,

如果要计算单元格区域中某个文本字符串或数字出现的次数,则可使用 COUNTIF 工作表函数。如果要根据单元格区域中的某一文本字符串或数字求和,则可使用 SUMIF 工作表函数。请了解关于根据条件计算值。 示例 1

如果您将示例复制到空白工作表中,可能会更易于理解该示例。 操作方法

1. 创建空白工作簿或工作表。

2. 请在“帮助”主题中选取示例。不要选取行或列标题。

从帮助中选取示例。

3. 按 Ctrl+C。

4. 在工作表中,选中单元格 A1,再按 Ctrl+V。

5. 若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),

或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。

A

数据

50

1 公式 说明(结果) 如果上面的数字小于等于 100,则公式将

显示“Within budget”。否则,公式显

示“Over budget”。(Within budget)

如果上面数字为 100,则计算单元格区域

B5:B15,否则返回空文本 ("") =IF(A2<=100,"Within 2 budget","Over budget") =IF(A2=100,SUM(B5:B15),"")

示例 2

如果您将示例复制到空白工作表中,可能会更易于理解该示例。 操作方法

1. 创建空白工作簿或工作表。

2. 请在“帮助”主题中选取示例。不要选取行或列标题。

从帮助中选取示例。

3. 按 Ctrl+C。

4. 在工作表中,选中单元格 A1,再按 Ctrl+V。

5. 若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。

A

1500 1 500 2 500 3

4 B 预算费用 900 900 925 实际费用 公式 说明(结果)

=IF(A2>B2,"Over Budget","OK") 判断第 1 行是否超出预算 (Over Budget) =IF(A3>B3,"Over Budget","OK") 判断第 2 行是否超出预算 (OK) 示例 3

如果您将示例复制到空白工作表中,可能会更易于理解该示例。 操作方法

1. 创建空白工作簿或工作表。

2. 请在“帮助”主题中选取示例。不要选取行或列标题。

从帮助中选取示例。

3. 按 Ctrl+C。

4. 在工作表中,选中单元格 A1,再按 Ctrl+V。

5. 若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。

A

成绩

45

90

1 78

2 公式 说明(结果)

为第一个成绩指定一

个字母等级 (F)

为第二个成绩指定一

个字母等级 (A)

为第三个成绩指定一

个字母等级 (C) 3 =IF(A2>89,"A",IF(A2>79,"B", IF(A2>69,"C",IF(A2>59,"D","F")))) 4 =IF(A3>89,"A",IF(A3>79,"B", IF(A3>69,"C",IF(A3>59,"D","F")))) =IF(A4>89,"A",IF(A4>79,"B", IF(A4>69,"C",IF(A4>59,"D","F"))))

在上例中,第二个 IF 语句同时也是第一个 IF 语句的参数 value_if_false。同样,第三个 IF 语句是第二个 IF 语句的参数 value_if_false。例如,如果第一个 logical_test (Average > 89) 为 TRUE,则返回“A”;如果第一个 logical_test 为 FALSE,则计算第二个 IF 语句,以此类推。

用下列关键字指定数字的字母等级。

如果成绩是 则返回

大于 89 A

80 到 89 B

70 到 79 C

60 到 69 D

小于 60

F

四 : if函数的使用方法

if函数的使用方法

函数:“=IF(A,B,C)”,意思是“如果A,那么B,否则C” 如“=IF(A1<60,"不及格","及格"),意思是“如果A1<60,那么‘不及格’,否则‘及格’”。(www.61k.com)有时候,情况不是这么简单,比如及格的成绩中又要分为“及格”“良好”“优秀”三个等级,这时就可以在C中重复应用函数IF。实际上,“=IF(A,B,C)”中的A、B、C三处都可以再用函数IF。

1、先认识函数语法:“=IF(要求的条件,满足条件的返回值,不满足条件的返回值)”。

2、第2层套嵌应在上述第2个逗号之后加IF(),第3层套嵌应在第2层套嵌括弧里的第2个逗号后添加IF()......最多可套嵌7层。这样也可以进一步理解上述第2项的“第2层套嵌应在上述第2个逗号之后加IF()”的意思。如:

=IF(A1<60,"不及格",IF(A1<75,"及格",IF(A1<90,"良好","优秀"))),等等。

if函数除了遵守一般函数的通用规则以外,还有其特有的注意事项:?? 1 、括号必须成对,上下对应。??

2 、if函数有N个条件则有N+1个结果,即若结果只有3种情况的,那么条件只要2个就够了。??

3、 if函数最多允许出现8个返回值(结果),也就意味着,最多套用7个if 。??

if函数的用法 if函数的使用方法

4 、多个if嵌套时,尽量使用同一种逻辑运算符。[www.61k.com)即:统一使用大于号或者统一使用小于号。避免出现不必要的错误。??

5、 if是个好函数,很管用。他的格式是:=if(条件1,返回值1,返回值2) 。多个嵌套的格式:=if(条件1,返回值1,if(条件2,返回值2,if(条件3,返回值3,返回值4))) 。这里先写3层嵌套,4、5、6、7层同理。

if函数的用法 if函数的使用方法
本文标题:if函数的使用方法-struts2 s:if标签以及 #,%{},%{#}的使用方法等在资料整理
本文地址: http://www.61k.com/1090929.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1