struts2的标签说明iterator,el,ognl

一、iterator.
这个标签主要的的作用就是跌代出集合。
value属性表示需要跌代显示出来的值。
status属性,又来保存跌代时的一些状态值。
注:1.如果需要引用valueStack中的值,需要使用这样的形式。
<s:iterator value="#list" /> //userList在action部分被保存在Request中,所以使用#加属性名
来引用值。
2.如果集合的值是通过action的方法,假设我们的action中有一个set/getListName方法,返回一个List
集合。我们可以使用如下的形式来引用这个集合,并用s:iterator来输出。
<s:iterator value="listName" />
3.iterator的value使用定义好的方式,如:
<s:iterator value="{'aa','bb','cc','cc'}" />      //这样跌代输出的值就是aa、bb 、cc、dd、这四个值。

二、iterator中输出具体值,如果,在上面我们的list中的对象,有两个属性,都是String类型,一个
是name,一个是url。
我们可以这样来引用。
1.      <s:property value="name" />       //将可以输出跌代对象的name属性值。不需要加#,加#则是获取action 里面传过来的值了。在struts2的标签内部,使用%{}这样的形式,在标签外部可以使用${}EL语言的方式。如果在struts2的标签内部使用${}这样的方式,会出现以下的错误
提示:
According to TLD or attribute directive in tag file, attribute value does not accept any
expressions
2.      如果希望使用<s:url />来将跳转过后的url进行处理,该如何来做?
<s:url value="%{url}"/>            //%{}ognl、${}el的表达式,这样的值能够将url的值进行<s:url/>的处理
实际上就是转为绝对路径。这样,我们就可以对付一些因跳转换产生的路径问题。
原因:因为<s:iteratotr />以后,当前的对象应该就在ValueStack顶部了,这样当然的url实际上
就是对象的url  属性了
3.<s:textfield name="loginName" value="%{#request.loginNames}"/>
使用此表达式,会生成一个文本框,并且,如果request.attribute中有loginNames属性,将会做为些文本框的默认值。如果只使用#request.loginNames在struts2的标签内部,是不会显示任何值的,注意外面加上的%{}附号,才会被正常的使用。如果希望如EL语言一样直接输出文件,如在一个<a></a>之间的innerHTML文本为#request.loginNames的值,我们只要使用:<s:property value="#request.loginNames" />使可以正常使用!也就是说在struts 的控件中需要加%。

你可能感兴趣的:(iterator)