`

Struts2的标签 逻辑标签---IF标签

 
阅读更多
Struts2的标签库中,有一个出场频度很高的逻辑标签---IF标签

<s:if>其实很简单, 就两个参数,常用的就一个"test"
但是, 要写一个合法test表达式,却是让我觉得很麻烦的事.( 经常写错)

test里面写的表达式经常要结合OGNL使用的, 例如:

<s:set name="name" value="<%= "'" + request.getParameter("name") + "'" %>" />
<s:if test="#name == 'Max'">
     Max's file here
</s:if>
<s:elseif test="#name == 'Scott'">
     Scott's file here
</s:elseif>
<s:else>
      Other's file here
</s:else> 

以上都是基本使用方式.

2.关于test表达式的flag右值

程序里经常有需要判断一个标志来控制页面元素的显示, 而这个传到页面的标志又是String型的"0"和"1", 表达式该怎么写?

<s:if test="#flag == '1">
       display some info
</s:if>

你认为像上面这种写法OK吗? 自己试试吧.

正确的写法如下例:

<s:set name="pf" value="#attr.orderlist.paidflag" ></s:set>
<s:if test="#attr.orderlist.paidflag == \"1\"">
    <span style="color: #CC0000;">
     <STRONG><s:property value="%{'已付款'}" /></STRONG>
    </span>
</s:if>
<s:else>
    <span style="color: #00CC00;">
     <STRONG><s:property value="%{'未付款'}" /></STRONG>
    </span>
</s:else>

就是这种写法 \"1\" 使用转义字符, 当然这个例子的OGNL复杂了点,因为这段代码所处的环境的关系.但重点是这种写法!
struts2标签<s:if>的小问题
struts2的标签<s:if> 谈不上BUG 是他做的不如意的地方,最近项目中遇到了多次,相信很多人会遇到当条件判断时候: 
<s:if test="tnature.b72 =='y' ">是</s:if> 当数据库字段b72 为char 并且长度为1时候  上面的写法是判断不出来的,这个时候需要做下处理发现2中处理方法 
方法一: 
<s:if test=' tnature.b72 =="y" '>是</s:if> 条件判断 外面单号'' 比较字符用双引号"" 
方法二: 
<s:if test=" tnature.b72 ==\"y\" "></s:if> 比较字符用 \转义一下 


个人签名

-------------------------------------

 

图盾 淘宝保护 保护图片 图片防盗

分享到:
评论

相关推荐

    struts2 标签库 帮助文档

    Struts 2 标签库(文档手册) Tags-API-CLSW-JSP &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. &lt;s:a href=""&gt;&lt;/s:a&gt;-...

    struts2的标签库

    这是一份关于struts2标签库的文档。 &lt;%@ taglib prefix="s" uri="/struts-tags"%&gt; struts2的标签共分为五大类: 一、逻辑控制标签 用于进行逻辑控制输出。主要分以下几类: 1)条件标签:用于执行基本的条件流转 ...

    Struts2+API+标签全解+网页说明

    非用户标签:数据访问、逻辑控制等。 AJAX标签:支持AJAX技术。 用户界面标签又分两类: 表单标签:生成HTML页面的from元素 非表单标签:生成页面上的Tab、Tree等 非界面标签又分为数据访问标签和流程控制标签...

    低清版 大型门户网站是这样炼成的.pdf

    11.4.1 展示层jsp 2+struts 2标签库实现 711 11.4.2 控制层struts 2实现 720 11.4.3 持久层hibernate 3实现 728 11.4.4 spring 2接管业务逻辑层 730 11.5 小结 733 第12章 站务必备—系统用户管理与流量统计 ...

    freemarker总结

    1-2、raw字符串: 有一种特殊的字符串称为raw字符串,被认为是纯文本,其中的\和{等不具有特殊含义,该类字符串在引号前面加r,下面是一个例子: ${r"/${data}"year""}屏幕输出结果为:/${data}"year" 转义 含义 ...

    Java学习笔记-个人整理的

    {1.9.1}\texttt {if\ldots esle\ldots }}{31}{subsection.1.9.1} {1.9.2}\texttt {switch}}{31}{subsection.1.9.2} {1.9.3}\texttt {while}}{32}{subsection.1.9.3} {1.9.4}\texttt {for}}{32}{subsection.1.9.4...

    Java语言基础下载

    Struts如何实现Model 2, MVC 639 Struts 控制流 639 Struts framework的工作原理和组件 642 Struts ActionServlet控制器对象 642 Struts Action Classes 642 搞定Action对象 643 处理异常 643 Action的分类 643 ...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关信息,一般是通过标签库(Taglib)实现,不同框架有不同自己的标签库,Struts是应用比较广泛的一种表现层框架。 2、 Ajax...

    java面试题

    Struts2只是起到一个数据接收和转接的功能,就是Controller控制器,而传来数据的页面叫view显示层,Struts2将数据提交给进行处理的类叫Model模型层,专门进行数据处理和数据库的连接。 heap和stack有什么区别? 答:...

    超级有影响力霸气的Java面试题大全文档

    &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 14、HashMap和Hashtable的区别。 HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空...

    java 面试题 总结

    &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 11、HashMap和Hashtable的区别。 HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空...

Global site tag (gtag.js) - Google Analytics