`
bjhd100
  • 浏览: 4205 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

EL表达式<siterator 索引下标遍历次数

阅读更多

struts2 页面遍历显示集合


<s:iterator />可以遍历 数据栈里面的任何数组,集合等等
在使用这个标签的时候有三个属性值得我们关注


1. value属性:可选的属性,value属性是指一个被迭代的集合,使用ognl表达式指定,如果为空的话默认就是ValueStack栈顶的集合。
2.id属性:可选属性, 是指集合元素的id。
3.status属性:可选属性,该属性在迭代时会产生一个IteratorStatus对象,该对象可以判断当前元素的位置,包含了以下属性方法:

int getCount(); 迭代元素个数
int getIndex(); 迭代元素当前索引
boolean getFirst(); 是否为第一个
boolean getEven(); 是否为偶
boolean getLast(); 是否最后一个
bolean getOdd();   是否为奇

由于iteratorstatus对象并不是ognl的根对象因此访问需要加上 #访问如下例子:
<s:iterator value=”{’dd’,'bb’,'cc’}” status=”st”>
   <s:if test=”#st.odd”>
      <s:property value=”#st.index”/>
   </s:if>
</s:iterator>

iterator也可以迭代map对象,map对象中有几对key-value 就迭代几次,分别使用
<s:property value=”key”/>
<s:property value=”value”/>

iterator也可以迭代简单的数组集合
<s:iterator value="collection1" status="status">
    <s:property value="collection1[#status.index][0]"/>
    <s:property value="collection1[#status.index][1]"/>
</s:iterator>
说明:[#status.index][?]" ,指示遍历数组指定的脚标元素,
如果你不知道数组的长度呢?
//以下是遍历数组每一个元素
<s:iterator value="total" status="stuts">
       <s:iterator value="total[#stuts.index]" >
                 <s:property/><br>    
       </s:iterator>
</s:iterator>
//直接使用<s:property/>也可以打印出每一个数组内容

***********iterator的value******************
1.如果需要引用valueStack中的值,需要使用这样的形式。
<s:iterator value="#userList" /> //userList在action部分被保存在Request中,所以使用#加属性名来引用值。

2.如果集合的值是通过action的方法,假设我们的action中有一个getListMenu方法,返回一个List集合。
我们可以使用如下的形式来引用这个集合,并用s:iterator来输出。
<s:iterator value="listMenu" />

3.iterator的value使用定义好的方式,如:
<s:iterator value="{1,2,3,4}" />         //这样跌代输出的值就是1.2.3.4这四个值。

**************iterator的各个对象属性输出********************************
iterator中输出具体值,如果,在上面我们的list中的对象,有两个属性,都是String类型,一个是name,一个是url
1.      <s:property value="name" />       //这样我们将可以输出跌代对象的name属性值。

2.      如果我们希望使用<s:url />来将跳转过后的url进行处理,该如何来做?
         <s:url value="%{url}"/>            //%{}ognl的表达式,这样的值能够将url的值进行<s:url/>的处理.实际上就是转为绝对路径。这样,我们就可以对付一些因跳转换产生的路径问题.原因:因为<s:iteratotr />以后,当前的对象应该就在ValueStack顶部了,这样当时的url实际上就是对象的url属性了

C:使用ognl输出对应的值。
<s:textfield name="loginName" value="%{#request.loginNames}"/>
使用此表达式,会生成一个文本框,并且,如果request.attribute中有loginNames属性,将会做为些文本框的默认值。
如果只使用#request.loginNames在struts2的标签内部,是不会显示任何值的,注意外面加上的%{}附号,才会被正常的使用。

如果希望如EL语言一样直接输出文件,如在一个<a></a>之间的innerHTML文本为#request.loginNames的值,我们只要使用:<s:property value="#request.loginNames" />使可以正常使用!

注意:

1.${}是EL语言的 %{}这样的形式是ognl表达式语言的,在struts2的标签内部,使用%{}这样的形式,在标签外部可以使用${}EL语言的方式。如果在struts2的标签内部使用${}这样的方式,会出现以下的错误提示:

According to TLD or attribute directive in tag file, attribute value does not accept any expressions

2. 很多时候,我们使用struts2的一些标签,属性是需要接受集合的,如果集合是保存在 request,session,或者是值栈(非根对象的栈顶),可以使用#变量名的方式,如果获取的值是在Action中通过特定的方法来获取,就需要使用如 value="userList"这样的方式,只是去掉了前面的#。

以下几个简单的例子:
<s:iterator/> 标签有3个属性:
value:被迭代的集合
id   :指定集合里面的元素的id
status 迭代元素的索引

1:jsp页面定义元素写法 数组或list 
<s:iterator value="{'1','2','3','4','5'}" id='number'>
     <s:property value='number'/>A
</s:iterator>

打印结果为: 1A2A3A4A5A

2:索引的用法
如果指定了status,每次的迭代数据都有IteratorStatus的实例,它有以下几个方法
int getCount()返回当前迭代了几个元素
int getIndex()返回当前元素索引
boolean isEven()当然的索引是否偶数
boolean isFirst()当前是否第一个元素
boolean isLast()
boolean isOdd()当前元素索引是否奇数

<s:iterator value="{'a','b','c'}" id='char' status='st'> 
      <s:if test="#st.Even"> 
           现在的索引是奇数为:<s:property value='#st.index'/> 
      </s:if> 
      当前元素值:<s:property value='char'/>
</s:iterator>

3:遍历map
value可以直接定义为:

1. value="#{"1":"a","2":"b"}"

每个元素以都逗号隔开。元素之间的key和value 冒号隔开
value也可以是数据栈里面的java.util.Map对象
遍历写法如下:

<s:iterator value="map" id="id" status="st"> 
        key : <s:property value='key'/> 
        value:<s:property vlaue='value'/>
</s:iterator>

当然key 和value 都可以使java 的 Object

3:遍历数据栈.简单的List类,
List<Attr>
class Attr{String attrName;String getAttrName(){return "123";}}

<s:iterator value="label" id="id"> 
     <s:property value="#id.attrName" />
</s:iterator>

当然value 还可以写成 value="%{label}" label可以有.操作
label的属性List 可以写成value="%{label.list}" 相当于:getLabel().getList();

4:遍历2个list;
List<AttrName> attrN {color,size,style}
List<AttrValue> attrV {red,20,gay}
这2个list的元素是一一对应的,一个attrN对应一个attrV

<s:iterator value="%{attrN }" id="id"   status="status">
   index    is : <s:property value='status.index'/>
   attrName is : <s:property value='id'/> or <s:property value='%{id}'/>
   attrName is : <s:property value='%{attrV[#status.index]}'/>
</s:iterator>

 

分享到:
评论

相关推荐

    EL表达式的使用详解

    EL 表达式的使用详解 EL 表达式是一种在 Java 服务器页面(JSP)中使用的表达式语言。它提供了一种简单的方式来访问和操作 Java 对象的属性。EL 表达式广泛应用于 JSP、Servlet、JSF 等 Web 开发技术中。本文将详细...

    el表达式用法部分解说

    ### EL表达式详解 EL(Expression Language)表达式在Java Web开发中扮演着重要的角色,尤其是在JSP(Java Server Pages)技术中。本文将详细解释EL表达式的使用方法及其应用场景,帮助开发者更好地理解和掌握这一...

    EL表达式的语法介绍

    EL 表达式语法介绍 EL 表达式是 Java 服务器页面(JSP)和 Java 服务器面板(JSF)中使用的一种表达式语言,用于在 Web 应用程序中实现动态内容。EL 表达式可以被解析成数值表达式和方法表达式,其中取值表达式用于...

    EL表达式使用文档,方便快速使用EL表达式.pdf

    EL 表达式使用文档 EL 表达式(Express Language)是一种强大的表达式语言,用于简化 JSP 页面中的编程。EL 表达式可以嵌入在 JSP 页面内部,减少 JSP 脚本的编写,目的是要替代 JSP 页面中脚本的编写。 EL 表达式...

    EL表达式包括字符串处理,时间日期的格式化,数字处理

    ### EL表达式详解 #### 一、EL表达式的概述与基本使用 EL(Expression Language),即表达式语言,是JavaServer Pages (JSP) 2.0标准的一部分,用于简化JSP页面中对数据访问的操作。它允许开发者通过简单的语法在...

    EL表达式练习 EL表达式练习

    传统的JSP脚本元素如`&lt;jsp:getProperty&gt;`和`&lt;jsp:setProperty&gt;`已经被EL表达式所取代,因为EL提供了更简洁的语法。例如,`&lt;jsp:getProperty name="user" property="name"/&gt;` 可以用 `${user.name}` 来代替。 **EL...

    jsp页面中EL表达式被当成字符串处理不显示值问题的解决方法

    在JSP页面开发过程中,EL(Expression Language)表达式是一种用于简化数据访问的语法,通过它可以方便地访问Java EE环境中JSP页面的隐含对象和JavaBeans组件。当EL表达式被错误地当作字符串处理而不是被解析时,会...

    JSTL以及EL表达式所需jar包

    为了增强JSP页面的功能性和简化代码,我们通常会使用两种技术:EL(Expression Language)表达式和JSTL(JavaServer Pages Standard Tag Library)标签库。这两个工具都是Java EE生态系统的一部分,极大地提高了开发...

    JAVAEE实验报告EL表达式和jstl标签库的使用.pdf

    JAVAEE 实验报告 EL 表达式和 JSTL 标签库的使用 EL 表达式(Expression Language)是一种在 JSP 页面中使用的脚本语言,用于简化 JSP 页面的开发。EL 表达式可以访问 JSP 页面中的变量、对象和集合,进行逻辑操作...

    EL表达式全解语法中文技术文档

    `c:forEach`标签配合EL表达式可实现循环遍历集合。 **十、EL的函数库** JSTL(JavaServer Pages Standard Tag Library)提供了一系列EL函数,如fmt:formatNumber、fn:length等,用于格式化数据、计算长度等。 ...

    el表达式EL表达式言语和JSTL

    例如,`&lt;c:if&gt;`和`&lt;c:forEach&gt;`标签可以配合EL表达式进行条件判断和循环操作。通过这种方式,开发者可以将业务逻辑和视图层分离,提高代码的可读性和维护性。 **应用场景** 1. **数据绑定**:EL表达式常用于数据...

    JSTL,EL表达式语法简介

    例如,使用EL表达式和`&lt;c:if&gt;`标签可以实现简单的条件判断: ```jsp &lt;c:if test="${user != null}"&gt; 用户已登录:${user.name} &lt;/c:if&gt; ``` 综上所述,JSTL和EL是JSP开发中非常重要的工具,它们提供了丰富的功能,...

    EL表达式(很全很强大)

    - **启用或禁用EL**:可以通过`&lt;%@ page isELIgnored="true"%&gt;`来控制是否启用EL表达式。默认情况下,EL表达式是开启的。 - **布尔表达式**:支持简单的布尔表达式,如`${true and false}`、`${5 &gt; 6}`等。 - **算术...

    EL表达式的使用方法

    ### EL表达式的使用方法 #### 一、简介 在Java Web开发中,EL(Expression Language)表达式是一种非常实用的功能,它允许开发者在JSP页面中动态获取对象属性的值或者执行简单的运算操作。通过使用EL表达式,可以...

    JSTL自定义EL表达式

    本资源主要讲解了如何在JSTL中定义和使用自定义的EL表达式,这对于提高JSP页面的可读性和可维护性至关重要。 首先,理解JSTL的基础概念。JSTL由几个核心标签库组成,如fmt、fn、sql、xml等,它们提供了处理日期和...

    el表达式介绍 el表达式使用帮助文档

    **EL(Expression Language)表达式**是JavaServer Pages (JSP) 2.0及更高版本中的一个核心组件,用于简化动态内容的生成。它提供了一种简洁的方式来访问JavaBean属性、集合、上下文作用域中的对象以及进行基本运算...

    EL表达式详解教程.zip

    此外,EL表达式还可以与JSP动作标签(如`&lt;jsp:useBean&gt;`、`&lt;jsp:setProperty&gt;`等)配合,实现更复杂的业务逻辑。 EL表达式与JavaBeans的结合使用是其核心优势之一。JavaBeans是一种遵循特定规范的Java类,通常用于...

    jstl EL表达式遍历Map的方法

    下面我们将详细介绍如何使用JSTL EL表达式遍历Map集合。 ### JSTL EL表达式概述 JSTL(JavaServer Pages Standard Tag Library)是一个JSP标签库,它简化了JSP页面的开发,使得JSP能够更专注于显示逻辑,而不是...

    EL表达式详解+实例教程

    此外,还可以通过 `&lt;%@ page isELIgnored="false" %&gt;` 指令来启用EL表达式,默认情况下EL表达式在JSP 2.0中已经启用。 #### 六、总结 通过本教程的学习,你应该对EL表达式的使用有了较为全面的了解。EL表达式不仅...

Global site tag (gtag.js) - Google Analytics