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>
分享到:
相关推荐
- **控制标签**:如`s:if`、`s:else`、`s:iterator`,用于条件判断和循环。 - **动作标签**:如`s:action`、`s:url`,用于执行Action并生成相应的URL。 - **表单标签**:如`s:textfield`、`s:checkbox`、`s:radio...
个人开发时遇到的struts标签的if标签是,将其功能遗忘,可以用来巩固记忆
Struts2 标签库详解 Struts2 提供了一个强大的标签库,用于简化 Web 应用程序的开发过程。这些标签可以分为两类:通用标签和 UI 标签。下面,我们将详细介绍 Struts2 标签库的使用。 4.1 通用标签 通用标签用来...
### Struts2 `<s:if>` 标签使用详解 #### 概述 Struts2 是一款基于 Java 的企业级 Web 应用框架,它利用了 MVC(Model-View-Controller)架构模式来帮助开发者构建可扩展、易于维护的 Web 应用程序。在 Struts2 中...
Struts标签库是Java Web开发中的一个重要组成部分,它极大地简化了开发者在JSP页面中处理业务逻辑和控制流程的工作。Struts是一个开源框架,最初由Apache软件基金会开发,旨在提供一个MVC(Model-View-Controller)...
在“struts标签.txt”文件中,可能包含了更多关于Struts标签的详细用法和示例。这些标签能够简化JSP页面的编写,提高开发效率,使得业务逻辑和视图层的分离更加清晰。通过学习和理解这些标签,开发者可以更好地掌握...
Struts标签库是Apache Struts框架的一部分,它提供了丰富的标签来处理常见的Web开发任务,如表单处理、显示数据、控制流程等。使用Struts标签,开发者可以避免在JSP页面中直接编写Java脚本,降低代码的复杂度。例如...
Struts标签库是Java Web开发中的一个重要组成部分,它极大地简化了基于MVC(Model-View-Controller)架构的Struts框架的应用程序开发。这个“Struts标签库查询手册”提供了全面的指南,帮助开发者理解和使用Struts...
### JSTL与Struts标签库详解 #### JSTL(JavaServer Pages Standard Tag Library)简介 JSTL,即JavaServer Pages Standard Tag Library(JavaServer Pages标准标签库),是为简化JavaServer Pages (JSP) 页面开发...
Struts标签是Apache Struts框架提供的用于简化JSP页面开发的组件,它们使得开发者能够更加高效、简洁地处理视图层逻辑。以下是一些主要的Struts标签及其用途的详细说明: A. `<s:a>` 和 `<s:action>`: 这两个标签...
- `s:if` 和 `s:else`:条件判断标签,类似于Java中的if...else语句。 - `s:foreach`:遍历数组或集合,类似Java的for-each循环。 4. **Struts2 HTML标签库**: - `s:html`:提供HTML元素,如`<html>`、`<head>`...
这个实例项目展示了如何在实际应用中结合Struts2、国际化、类型转换以及Struts2自定义标签来实现用户管理功能,包括用户数据的增删改查。 首先,我们来看Struts2的核心概念。Struts2作为MVC框架,它负责处理HTTP...
Struts标签库是Java Web开发中的一个重要组成部分,尤其在基于MVC(Model-View-Controller)架构的应用中,它极大地简化了视图层的构建。Struts 1和Struts 2都提供了丰富的标签库来帮助开发者高效地创建动态HTML页面...
使用Struts标签库的优势在于,它可以将业务逻辑和视图层分离,降低代码耦合度,提高可维护性。在实际开发中,熟练掌握这些标签能够有效地提升开发效率,使代码更易于理解和维护。 综上所述,Struts1.2.9的标签大全...
Struts2标签是Java Web开发框架Struts2中的一部分,它提供了一种简化JSP页面编写的方式,使得开发者可以通过XML语法来替代繁琐的Java脚本和JSP动作元素。Struts2标签库大大提升了代码的可读性和维护性,使得业务逻辑...
Struts标签库提供了丰富的标签,使得开发者可以使用简洁的XML或JSP语法来实现复杂的页面逻辑,而无需过多地编写Java脚本。 1. **基础标签库**: - `logic`标签库:主要用于控制流程,如`<logic:equal>`比较两个值...
9. `s:if` 和 `s:else`: 条件判断标签,类似于Java的if-else语句。 10. `s:iterator`: 循环标签,常用于遍历集合数据,如List、Map等。 11. `s:include` 和 `s:useBean`: 分别用于包含其他页面和实例化Java Bean。...
Struts2标签是Struts2框架提供的一种强大的视图层技术,它极大地简化了JSP页面的编写,提高了代码的可读性和可维护性。在本文中,我们将深入探讨Struts2标签的用法,包括它们的基本概念、类型以及如何在实际开发中...
在Struts2中,标签库是其核心特性之一,它提供了一系列预定义的标签,使得开发者可以在JSP页面中更方便地处理业务逻辑和展示数据,减少了对Java脚本的依赖,提高了代码的可读性和可维护性。 **1. Struts2标签库概述...