`
wenxiang_tune
  • 浏览: 48848 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

s:iterator 标签的使用详解及OGNL用法

阅读更多

 简单demo
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
可以直接定义为

value="#{"1":"a","2":"b"}" 
个元素以都好隔。元素之keyvalue 冒号隔
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
:遍2list

List<AttrName> attrN {color,size,style}
List<AttrValue> attrV {red,20,gay}
2list的元素是一一对应的,一个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> 




<s:bean name="org.apache.struts2.util.Counter" id="counter">
<s:param name="first" value="5" />
<s:param name="last" value="10" />
<s:iterator>
counter:<s:property/>
</s:iterator>
</s:bean>

 

 

 

 

 

标签主要的的作用就是迭代出集合。。 
value
属性表示需要跌代示出来的
 
status
属性,又来保存迭代的一些状态值
 

注:
 
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出具体,如果,在上面我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          属性了
 

三、使用ognl对应
 
<s:textfield name="loginName" value="%{#request.loginNames}"/> 

使用此表达式,会生成一个文本框,并且,如果request.attribute中有loginNames属性,将会做些文本框的默认值
 
如果只使用#request.loginNamesstruts2标签内部,是不会示任何的,注意外面加上的%{}附号,才会被正常的使用。
 
如果希望如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"这样的方式,只是去掉了前面的#

 

struts2中的OGNL用法

User象属性
User中有usernamepassword字段
username属性<s:property value="user.username" />
password属性
<s:property value="user.password" />

User中又包含定address象,address象中包含有addr属性,可以这样访问

addr属性<s:property value="user.address.addr" />

User包含一个get()的普通方法,可以这样调

<s:property value="user.get()" />
以上是值栈象的普通方法,user为值栈中的

action中的静方法get(),普通方法不能直接
<s:property value="@com.netshuai.action.ManagerAction@get()" />
以上为调用非值栈中的静方法

JDK的静方法<s:property value="@java.lang.Math@floor(32.56)" />
上例也可写成<s:property value="@@floor(32.56)" />,省略前面的类则使用java.lang.Math,其他不可省略


用普通中的静属性<s:property value="@com.netshuai.model.Address@city" />
address
中的city属性要用public声明


用普通的构造方法,如构造方法
public User(String username)
{
      this.username=username;
}
用方法<s:property value="new com.netshuai.model.User('hello').username" />返回username值为hello

List<s:property value="list" />
List中的某一个元素
<s:property value="list[0]" />
List的大小
<s:property value="list.size" />
Set<s:property value="set" />
无法Set中的某一个元素,因Set没有

Map<s:property value="map" />
line-height: 19px;

分享到:
评论
1 楼 tracyyr 2011-12-05  
学习了!刚好用到map遍历

相关推荐

    struts2中siterator 标签的使用详解 及 OGNL用法.docx

    这篇文档详细讲解了 `s:iterator` 标签的使用方法以及 OGNL(Object-Graph Navigation Language)的用法。 1. **s:iterator 标签的基本属性** - `value`:这个属性是必需的,用于指定要迭代的集合。它可以是一个...

    struts2中siterator 标签的使用详解 及 OGNL用法

    接下来,我们将详细介绍 `siterator` 标签的使用和 OGNL 的用法。 1. **siterator 标签的属性**: - **value**:这是必需的属性,用于指定要迭代的集合。可以是直接的值,如数组或 Map,也可以是从 Action 中返回...

    struts2中siterator 标签的使用详解 及 OGNL用法.pdf

    本篇文章将深入讲解`s:iterator`标签的使用及其与OGNL(Object-Graph Navigation Language)的结合应用。 1. **s:iterator标签的基本使用** - **value属性**:该属性指定需要迭代的集合。它可以是数组、列表、Map...

    struts2中iterator 标签的使用详解

    本文将详细解析`&lt;s:iterator&gt;`标签的使用方法,包括其关键属性、OGNL表达式的应用以及一些高级用法。 #### 1. 基础用法:遍历数组或列表 `&lt;s:iterator&gt;`标签最基本的用法是遍历一个数组或列表。例如: ```xml &lt;s:...

    struts2 标签使用

    接下来,我们将通过几个具体的示例来详细了解 `&lt;s:if&gt;` 标签的使用方法。 ##### 示例一:简单的条件判断 ```html &lt;s:set name="country" value="China" /&gt; &lt;s:if test="%{#country == 'China'}"&gt; This is China! ...

    struts2标签详解

    1. `&lt;s:iterator&gt;`:迭代集合对象,常与`s:property`结合使用来遍历并显示数据。 2. `&lt;s:if&gt;`和`s:else&gt;`:条件判断,可以与ognl表达式配合,实现动态内容展示。 3. `&lt;s:choose&gt;`, `&lt;s:when&gt;`, `&lt;s:otherwise&gt;`:多...

    Struts2标签使用及API文档

    `struts2标签用法.doc`和`标签详解`文件可能包含更深入的标签用法和实例,例如如何使用`s:form`创建表单,如何利用`s:action`执行Action,以及如何使用`s:debug`标签进行调试等。 5. **Struts2标签的高级用法** -...

    struts2中OGNL的一些概念及原理说明

    4. **OGNL的六种使用方法**:在实际应用中,OGNL表达式具有多种用途,包括但不限于: - **基本用法**:如上例所示,直接通过对象属性的方式来访问或设置数据。 - **转换为字符串**:有时需要将OGNL表达式的结果...

    Struts2标签库详解

    2. `&lt;s:iterator&gt;`:迭代标签,可以遍历数组、集合、Map等数据结构。 3. `&lt;s:switch&gt;` 和 `&lt;s:case&gt;`:类似于Java的switch语句,用于多分支判断。 4. `&lt;s:include&gt;`:包含其他JSP或Freemarker模板。 三、Struts2...

    struts2标签库详解

    以上是对Struts2标签库的详细概述,涵盖了常用标签的使用方法和注意事项。了解并熟练应用这些标签,能够帮助开发者更好地构建Struts2应用,提升开发效率。文档中的"Struts2标签库详解.doc"应该包含了更详细的实例和...

    Struts2中ognl遍历数组,list和map方法详解

    Struts2中,使用 `&lt;s:iterator /&gt;` 标签可以遍历数据栈里的任何数组、集合等。在使用这个标签时,有三个属性值得我们关注:value、id和status。 1. value属性:可选的属性,value属性是指一个被迭代的集合,使用...

    struts2.0标签详解

    - `s:form`: 表单标签,可设置Action、主题、方法等属性,用于封装用户输入的数据。 - `s:property`: 显示Action或Model中的属性值,常用于数据显示。 2. **展示标签库** - `s:debug`: 输出当前ActionContext中...

    struts2的s标签

    ### Struts2中的S标签详解 #### 一、概述 Struts2框架是Apache软件基金会下的一个开源项目,它提供了一种基于MVC(Model-View-Controller)设计模式的Web应用开发框架。Struts2提供了丰富的标签库,其中“S标签”...

    struts2标签库

    #### 三、OGNL表达式使用方法 在Struts2中,可以通过以下方式来使用OGNL表达式: - **访问ValueStack中的对象**:可以直接使用`${}`语法来访问ValueStack中的对象,例如`"${foo}"`表示访问名为`foo`的对象。 - **...

    Struts2 使用OGNL遍历map方法详解

    这个例子中,我们使用嵌套的`s:iterator`标签来遍历数组中的每个元素。 4. **遍历学生列表**: ```jsp &lt;s:iterator value="listMap"&gt; &lt;td&gt;Class:&lt;s:property value="key"/&gt; &lt;s:iterator value="value"&gt; ...

    Struts2之Ognl详解案例TextOgnl

    因此,在实际应用中,应确保对用户输入进行严格的校验和过滤,或者使用Struts2的安全插件来防止OGNL注入。 五、总结 OGNL在Struts2中扮演着关键角色,它简化了数据绑定和对象交互。然而,开发者也需要注意其潜在的...

    struts学习笔记(4)

    OGNL 主要在 Struts2 的标签内部使用,用于获取或设置值。 1. **基本用法**: - `#` 符号表示访问 Struts2 的上下文变量,如 `#request`、`#session`、`#application` 等。 - `.` 或 `[]` 用于访问对象的属性。 ...

    精通struts2的ognl表达式

    2. **条件判断与循环**:利用OGNL,可以在Struts2的标签库中实现复杂的逻辑处理,比如`&lt;s:if test="someCondition"&gt;...&lt;/s:if&gt;`这样的条件判断语句。 3. **动态方法调用**:OGNL支持静态方法的调用,这使得开发者...

Global site tag (gtag.js) - Google Analytics