struts2.0笔记

本文介绍Struts2框架中的标签使用方法,包括s:iterator遍历集合、s:property显示属性值等,并详细解释如何利用这些标签进行数据展示及分页处理。此外,还介绍了Struts2中的文件上传机制。

1.    <s:iterator value="cooperList" status="st">

        <s:if test="#st.odd||#st.first">
       boolean isEven() 当前迭代元素索引是否为偶数;
       boolean isOdd() 当前迭代元素索引是否为奇数;
       boolean isLast() 是否为最后一条元素;
       boolean isFirst() 是否为第一条元素。
       有以上元素,那么判断何时加入tr就非常方便。

      

 <s:if test="((#stuts.Index)+1)%3==0">         #stuts.Index迭代到了第几个   
              <br><br><br><br><br><br><br><br><br><br><br><br><br><br>
       </s:if>

 

 

struts2.0       iterator

struts2的s:iterator 可以遍历 数据栈里面的任何数组,集合等等 以下几个简单的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
 <s:iterator value="{'e1','e2','e3'}" id="name" status="st"> 
         <s:property value="#name"/>
    </s:iterator>
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"}"
每个元素以都好隔开。元素之间的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>  

 

 

2.文件上传

  你在客户端定义的file控件的名称为:
myFile
所以你在struts2的服务端需要定义myFile的这个属性,
但是struts2有一种自动的机制,能够将文件名,文件类型自动保存到一个变
量里面。

现在的问题是:
struts2怎么知道你要保存的变量是哪一个?随便选择一个吗?这样是没有意义的。
所以struts2就定义了一个规则。
以客户端定义的file控件的名称myFile为准.
  private String myFileContentType;// 文件的内容类型
  private String myFileFileName;// 上传文件名 
注意:
  myFile+ContentType
  myFile+FileName
这一下struts2就知道是哪一个了,呵呵。

相对路径

ServletActionContext.getRequest().getRealPath("productimage\\"+myFileName);

3.format实例

<fmt:formatDate value="<%=new Date() %>" pattern="yyyy年MM月dd日HH点mm分ss秒" />

 

4.s:property

value="aaa"

value="#session.aaa"

value="%{aaa}"

 

5.Struts2.0标签实现的一个分页

<td align="center">
    <font color="#ffffff">
    第<s:property value="pag.page"/>页/
    总共<s:property value="pag.allpage"/>页&nbsp;
    <s:iterator value="{-3,-2-1,0,1,2,3}" id="name" status="st">
       <s:set name="temp" value="#name+pag.page"></s:set>
       <s:if test="#temp>0&&#temp<=pag.allpage">
          <a href="product.action?pageNo=<s:property value='#temp'/>">
              [<s:property value="#temp"/>]
          </a>
       </s:if>
    </s:iterator>

    &nbsp;
    <s:if test="pag.page!=1">
     <a href="product.action?pageNo=<s:property value='pag.page-1'/>">上一页</a>
    </s:if>
    |
    <s:if test="pag.page<pag.allpage">
    <a href="product.action?pageNo=<s:property value='pag.page+1'/>">下一页</a>
    </s:if>
    </font>
   </td>

 

 

6.Struts2乱码问题

    用struts2的情况下,fiter过滤器去修改request的字符编码不能够影响struts2中ServletActionContext获得的request的编码。必须在struts.xml中配置

	<constant name="struts.i18n.encoding" value="gbk"></constant>

 

 7.获得inputStream和classes路径

JdomParse.class.getClassLoader().getResource("").getPath()   ;

JdomParse.class.getClassLoader().getResourceAsStream(“文件”);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值