`
llyzq
  • 浏览: 585588 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Struts 标签 if

阅读更多

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

<s:if>其实很简单, 就两个参数,常用的就一个"test"

参数如下:

名称 必需 默认 类型          描述                           
test 是  Boolean         决定标志里内容是否显示的表达式.else标志没有这个参数
id   否  Object/String   用来标识元素的id.在UI和表单中为HTML的id属性 



但是, 要写一个合法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复杂了点,因为这段代码所处的环境的关系.但重点是这种写法!

引用1

If care is not taken with the quoting of literals, the expression language (OGNL) will misinterpret a char as a String.

===========================================
Wrong

<s:if test="aStringProperty == 'A'">
Why doesn't this work when myString is equal to A?
</s:if>

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

The solution is simple: flip the double and single quotes.
Right

<s:if test='aStringProperty == "A"'>
This works!
</s:if>

Another solution is to escape the double quotes in the String.
Also Right

<s:if test="aStringProperty == \"A\"">
This works too!
</s:if>

引用2---一个兄弟的回帖

抱歉,经过再次分析,这不是struts2的bug。一个很容易错误应用的问题。
<s:if test="deptType==1" >下属 </s:if>如果你的数据库对应的字段类型为整形,可以这样使用;

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

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

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

3.test表达式中的OGNL

OGNL表达式中的#符号,该使用的时候,就一定不能省略,否则取不到值的. 除非你是取ValueStack中的东西可以不要.(取OGNL的Root里的东西本来就不用加#符号)

4.复杂逻辑的test表达式

不多说了, 给个例子就是了.

如果验证有错误的时候, 在页面显示出错误消息的例子:

<s:if test="fieldErrors!=null&&fieldErrors.size !=0">
    <div id="ErrorArea" style="color: #CC0000; border: 1px solid #CC0000;">
    <s:fielderror id="error"></s:fielderror></div>
</s:if>

分享到:
评论
1 楼 animo_itey 2011-12-20  
谢谢你了老兄 。
用到了

相关推荐

    Struts标签库 Struts 标签库

    - **控制标签**:如`s:if`、`s:else`、`s:iterator`,用于条件判断和循环。 - **动作标签**:如`s:action`、`s:url`,用于执行Action并生成相应的URL。 - **表单标签**:如`s:textfield`、`s:checkbox`、`s:radio...

    struts的if标签

    个人开发时遇到的struts标签的if标签是,将其功能遗忘,可以用来巩固记忆

    struts2标签库例子

    Struts2 标签库详解 Struts2 提供了一个强大的标签库,用于简化 Web 应用程序的开发过程。这些标签可以分为两类:通用标签和 UI 标签。下面,我们将详细介绍 Struts2 标签库的使用。 4.1 通用标签 通用标签用来...

    struts2 标签使用

    ### Struts2 `&lt;s:if&gt;` 标签使用详解 #### 概述 Struts2 是一款基于 Java 的企业级 Web 应用框架,它利用了 MVC(Model-View-Controller)架构模式来帮助开发者构建可扩展、易于维护的 Web 应用程序。在 Struts2 中...

    struts标签库学习

    Struts标签库是Java Web开发中的一个重要组成部分,它极大地简化了开发者在JSP页面中处理业务逻辑和控制流程的工作。Struts是一个开源框架,最初由Apache软件基金会开发,旨在提供一个MVC(Model-View-Controller)...

    图像加法&struts用法标签大全

    在“struts标签.txt”文件中,可能包含了更多关于Struts标签的详细用法和示例。这些标签能够简化JSP页面的编写,提高开发效率,使得业务逻辑和视图层的分离更加清晰。通过学习和理解这些标签,开发者可以更好地掌握...

    Struts标签 和jstl标签

    Struts标签库是Apache Struts框架的一部分,它提供了丰富的标签来处理常见的Web开发任务,如表单处理、显示数据、控制流程等。使用Struts标签,开发者可以避免在JSP页面中直接编写Java脚本,降低代码的复杂度。例如...

    Struts标签库查询手册.chm

    Struts标签库是Java Web开发中的一个重要组成部分,它极大地简化了基于MVC(Model-View-Controller)架构的Struts框架的应用程序开发。这个“Struts标签库查询手册”提供了全面的指南,帮助开发者理解和使用Struts...

    jstl和struts标签

    ### JSTL与Struts标签库详解 #### JSTL(JavaServer Pages Standard Tag Library)简介 JSTL,即JavaServer Pages Standard Tag Library(JavaServer Pages标准标签库),是为简化JavaServer Pages (JSP) 页面开发...

    Struts标签集合简介

    Struts标签是Apache Struts框架提供的用于简化JSP页面开发的组件,它们使得开发者能够更加高效、简洁地处理视图层逻辑。以下是一些主要的Struts标签及其用途的详细说明: A. `&lt;s:a&gt;` 和 `&lt;s:action&gt;`: 这两个标签...

    struts2标签使用例子

    - `s:if` 和 `s:else`:条件判断标签,类似于Java中的if...else语句。 - `s:foreach`:遍历数组或集合,类似Java的for-each循环。 4. **Struts2 HTML标签库**: - `s:html`:提供HTML元素,如`&lt;html&gt;`、`&lt;head&gt;`...

    Struts2实例 国际化 类型转换 struts标签

    这个实例项目展示了如何在实际应用中结合Struts2、国际化、类型转换以及Struts2自定义标签来实现用户管理功能,包括用户数据的增删改查。 首先,我们来看Struts2的核心概念。Struts2作为MVC框架,它负责处理HTTP...

    Struts标签库查询手册

    Struts标签库是Java Web开发中的一个重要组成部分,尤其在基于MVC(Model-View-Controller)架构的应用中,它极大地简化了视图层的构建。Struts 1和Struts 2都提供了丰富的标签库来帮助开发者高效地创建动态HTML页面...

    struts标签大全

    使用Struts标签库的优势在于,它可以将业务逻辑和视图层分离,降低代码耦合度,提高可维护性。在实际开发中,熟练掌握这些标签能够有效地提升开发效率,使代码更易于理解和维护。 综上所述,Struts1.2.9的标签大全...

    struts2标签教程(中文版)

    Struts2标签是Java Web开发框架Struts2中的一部分,它提供了一种简化JSP页面编写的方式,使得开发者可以通过XML语法来替代繁琐的Java脚本和JSP动作元素。Struts2标签库大大提升了代码的可读性和维护性,使得业务逻辑...

    Java EE Struts 标签

    Struts标签库提供了丰富的标签,使得开发者可以使用简洁的XML或JSP语法来实现复杂的页面逻辑,而无需过多地编写Java脚本。 1. **基础标签库**: - `logic`标签库:主要用于控制流程,如`&lt;logic:equal&gt;`比较两个值...

    struts2标签库详解(非常不错)

    9. `s:if` 和 `s:else`: 条件判断标签,类似于Java的if-else语句。 10. `s:iterator`: 循环标签,常用于遍历集合数据,如List、Map等。 11. `s:include` 和 `s:useBean`: 分别用于包含其他页面和实例化Java Bean。...

    struts2标签用法详解

    Struts2标签是Struts2框架提供的一种强大的视图层技术,它极大地简化了JSP页面的编写,提高了代码的可读性和可维护性。在本文中,我们将深入探讨Struts2标签的用法,包括它们的基本概念、类型以及如何在实际开发中...

    struts2标签的解释

    在Struts2中,标签库是其核心特性之一,它提供了一系列预定义的标签,使得开发者可以在JSP页面中更方便地处理业务逻辑和展示数据,减少了对Java脚本的依赖,提高了代码的可读性和可维护性。 **1. Struts2标签库概述...

Global site tag (gtag.js) - Google Analytics