知识大全 Struts2 -- s:if标签的使用

Posted 表达式

篇首语:学者的一天比不学无术的人一生还有价值。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Struts2 -- s:if标签的使用相关的知识,希望对你有一定的参考价值。

Struts2 -- s:if标签的使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

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

   判断单个字符 <s:if test= #session user username== c >

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

  <s:if test= #session user username== c toString() >

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

   判断字符串 <s:if test= #session user username== milo >

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

   判断数值 <s:if test= #session user username== >

  这样写的就是判断username是不是 是int的判断

  B 判断为空的问题

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

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

  判断非空可以这样写

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

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

  

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

  正确

  <s:if test= activityBean searchForce== N >

  错误

  <s:if test= activityBean searchForce== N >

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

  而双引号则表示String类型

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

  /*************************************************************************************************************************************************************

  例如这个语句

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

  写成

  <s:if test= systemSettingModel settingValue == A > </s:if>

  是不对的

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

  应写成

  <s:if test= systemSettingModel settingValue == A > </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堆栈里取

  /*********************************************************************************************************************************************************

  Struts 堆栈

  struts 中的标签

  s:a 中的href 什么时候使用 # 什么时候该用 % 什么时候该用 %# 什么时候用

  s:select 中的list 什么时候使用 # 什么时候该用 % 什么时候该用 %# 什么时候用

  s:if 中的test 什么时候使用 # 什么时候该用 % 什么时候该用 %# 什么时候用

  s:iterator 中的value什么时候使用 # 什么时候该用 % 什么时候该用 %# 什么时候用

  s:checkboxlist 中的list 什么时候使用 # 什么时候该用 % 什么时候该用 %# 什么时候用

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

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

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

  在域对象中使用%#

  比如%#session user userName

  将获得user对象的 userName属性值

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

  %用于计算表达式

  如% + 结果将输出

  如% a + b 结果将输出 ab

  #通常强调从上下文取

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

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

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

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

  如先定义一个变量

  <s:set name= age value= % />

  则%#age将输出 也可以省略 # 写为%age

  若将age加 可这么写

  %#age+ 将输出 不能省略 # 也就说变量用于计算时不能省略 #

  ===================================================================================================

  ognl中的# %和$

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

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

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

   )用于过滤和投影(projecting)集合 如示例中的persons ?#this age>

   )用来构造Map 例如示例中的# foo ′: bar ′ foo ′: bar ′

   .%符号

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

  构造Map

  <s:set name= foobar value= # foo ′: bar ′ foo ′: bar ′ />

  <p>The value of key foo ″ is <s:property value= #foobar[ foo ] /></p>

  <p>不使用% <s:url value= #foobar[ foo ] /></p>

  <p>使用% <s:url value= %#foobar[ foo ] /></p>

   .$符号

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

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

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

  <validators>

  <field name= intb >

  <field validator type= int >

  <param name= min > </param>

  <param name= max > </param>

  <message>BAction test校验 数字必须为$min为$max之间!</message>

  </field validator>

  </field>

cha138/Article/program/Java/ky/201311/27854

相关参考

知识大全 struts2标签取值方式

   标签取值方式一      通过<s:propertyvalue=/>取值 &nbs

知识大全 struts2标签中字符串及字符替换

  替换内容为单个字符  <s:propertyvalue=strValuereplace(sA)/>  替换内容为多个字符  <s:propertyvalue=strValuere

知识大全 struts2迭代不同对象的测试

  在平时使用s:iterator这个迭代标签一般我们都是把一个相同类型的多个对象放入一个集合当中那么是否可以放入不相同的对象来迭代呢?日常工作有时候可能是需要这样来简化程序的我今天测试了一下好像完全

知识大全 struts2中一个form多个提交的方法

  在很多Web应用中为了完成不同的工作一个HTMLform标签中可能有两个或多个submit按钮如下面的代码所示  <![if!supportLineBreakNewLine]>  &l

知识大全 在jsp页面判断struts2变量的值

  首先在action里面要用变量sex并且要有get方法  jsp页面中可以用ONGL标签$sex 直接输出变量sex的值  <s:propertyvalue=sex/>也可以输出但好像

知识大全 学习比较Struts2和Struts1:Struts2完胜

学习比较Struts2和Struts1:Struts2完胜  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 Struts2简介

Struts2简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一什么是Struts?  虽然

知识大全 Struts2注解(旧&新)

Struts2注解(旧&新)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  旧版本使用注解  开

知识大全 Struts2输入校验流程

Struts2输入校验流程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  类型转换器负责请求参数

知识大全 Struts2的整体流程(上)

Struts2的整体流程(上)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!