Struts2五ValueStack以及ognl表达式二(经常使用标签)

Posted liguangsunls

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2五ValueStack以及ognl表达式二(经常使用标签)相关的知识,希望对你有一定的参考价值。

   Ognl经常使用标签:   

  1、s:debug
      假设把该标签放入到s:iterator中能够看到当前正在迭代的元素的状态
   2、s:property
      1、输出
      2、value属性:值能直接跟ognl表达式
      3、假设value属性不写。则默认输出栈顶的元素
   3:s:iterator标签
      (1)、iterator迭代Collection,Map,Object[],还能够以组合的形式迭代
      (2)、当前正在迭代的元素在栈顶
      (3)、假设value属性不写,则默认迭代栈顶的元素
      (4)、假设迭代的是map元素。当前正在迭代的元素是Entry<key,value>,这个时候key和value是对象栈
         中的属性
       (5)、var属性,var=‘aa‘相当于给当前正在迭代的元素在map栈又存放了一次,key值为aa
       (6)、status属性,能够获取当前正在迭代的元素的信息count,index,odd,event,查看IteratorStatus这个类
       (7)、end,first,step属性
   4、s:if  s:elseif
       注意:不能使用单个字符进行推断
             <s:if test="name==1">   <s:if test="name==‘1‘">这样的写法不正确

========================演示样例:
1.在Action中将数据存入valuestack中;
public String putListToMap(){
          List<Person> personList = new ArrayList<Person>();    
          Person p= null;
           for (int i = 0; i < 50; i++) {
              p= new Person();
               if(i%3==0){
                   p.setPid( "aa");
                   p.setUsername( "P"+i);
              }
               if(i%3==1){
                   p.setPid( "bb");
                   p.setUsername( "p"+i);
              }
               if(i%3==2){
                   p.setPid( "cc");
                   p.setUsername( "p"+i);
              }
              personList.add(p);
              
          }
          
          ActionContext. getContext().put("pList", personList);
           return "list_map" ;
     }

2.在jsp页面迭代显示集合数据:
<style type= "text/css">
           .odd{
               background-color:red ;
          }
           .even{
               background-color:blue ;
          }
           .blue{
               background-color:yellow ;
          }
           .red{
               background-color:red ;
          }
  </style >

<s:iterator value= "#pList" var ="aa" status="statu">
          
               <!-- 每三行变色 status 使用s:debug能够查看到该类为IteratorStatus -->
               <tr class= "<s:property value="#statu.index%3==0?‘blue‘:‘red‘" />">
               <%--<tr class="<s:property value="#statu.even?‘even‘:‘odd‘"/>">
                   --%>
                    <td>
                         <s:property value= "pid"/>
                    </td>
                    <td>
                         <s:property value= "username"/>
                    </td>
                    <td>
                         <s:property value="#statu.count" />
                    </td>
                    <td>
                         <s:if test= "#statu.odd">
                             奇数行
                         </s:if>
                         <s:elseif test= "#statu.even">
                             偶数行
                         </s:elseif>
                    </td>
                    <td>
                         <s:property value="#statu.index" />
                    </td>
                    <td>
                         <s:if test="pid==‘aa‘||pid==‘bb‘" >
                              <input type= "button" name="adsf" value="改动">
                         </s:if>
                    </td>
                    <td>
                         <s:if test="pid==‘cc‘||pid==‘aa‘" >
                              <input type= "button" name="adsf" value="删除">
                         </s:if>
                    </td>
               </tr>
           </s:iterator>
  


显示结果图:
技术分享
























以上是关于Struts2五ValueStack以及ognl表达式二(经常使用标签)的主要内容,如果未能解决你的问题,请参考以下文章

struts2 ValueStack

Struts2数据传输的背后机制:ValueStack(值栈)

[ SSH框架 ] Struts2框架学习之三(OGNl和ValueStack值栈学习)

Struts2 OGNL

Struts2的标签库——OGNL表达式

ValueStack值栈和ActionContext