struts2标签库详解(一)非UI标签之逻辑控制标签

Struts tag lib

1 Struts2提供了功能强大的标签库,这些标签库分为两类:用户界面标签即UI标签,非用户界面标签即非UI标签。

1.1非用户界面标签:主要用于逻辑控制和数据访问,分为:逻辑逻辑控制标签,数据访问标签。

>逻辑控制标签:完成分支和循环操作

>数据访问标签

1.2用户标签UI标签:主要用于生成html元素。分为表单标签,非表单标签,Ajax标签。

>表单标签

         <s:iterator>,

2 非UI标签详解

2.1 逻辑控制标签

>if/eslsif/else标签

注意:声明使用struts标签库<%@ taglib prefix="s" uri="/struts-tags" %>

<s:set name="score" value="#parameters.score[0]" scope="page"></s:set><!-- parameters拿到传过来的参数吗???? -->

        <s:if test="#attr.score >= 90" >

               优秀

        </s:if>

        <s:elseif test="#attr.score >= 80">

               良好

        </s:elseif>

        <s:elseif test="#attr.score >= 60">

            及格

       

        </s:elseif>

        <s:else>

            不及格

        </s:else>

运城该jsp页面并添加?score=56如: http://localhost/strutstag/IfElseTags.jsp?score=65

>itetrator标签

<body>

    <s:set id="myArray" value="{'hello','world','hi','study'}"></s:set>


    <s:iterator value="#myArray" id="word">

        <s:property value="#word"/><br/>

   

    </s:iterator>

   <br/>--------------------------------------------------------------------------<br/>

   <s:iterator value="#myArray">

        <s:property /><br/>

   

    </s:iterator>

  </body>

</html>

结果:


 

>set,property标签

<body>

    <s:set name="janesName">Jane Doe</s:set>

    范围:<s:property value="#janesName"/><br/><!--官方的例子有没有#都对 -->

    范围EL:${janesName }

   

    <br/>-------------------------------------------------------<br/>

    <s:set var="actionID" scope="action">李四</s:set>

    action范围:<s:property value="actionID"/><br/>

    action范围EL:${actionID }

   

    <br/>--------------------------------------------------<br/>

   

    <s:set name="pageID" scope="page" value="zhangsan"></s:set><!-- //worng ???? -->

    <s:set name="pageID" scope="page" >张三</s:set>                  <!-- right -->

    page范围:<s:property value="#attr.pageID"/><br/>

    page范围EL:${pageScope.pageID }

   

    <br/>------------------------------------------------------------<br>

    <s:set name="requestID" scope="request">王五</s:set>

    request范围:<s:property value="#request.requestID"/><br/>

    request范围EL:${requestScope.requestID }

    <br/>------------------------------------------------------<br/>

    <s:set name="sessionID" scope="session">赵六</s:set>

    session范围:<s:property value="#session.sessionID"/><br/>

    session范围EL:${sessionScope.sessionID }

    <br/>-----------------------------------------------------------<br/>

    <s:set name="applicationID" scope="application">钱七</s:set>

    application范围:<s:property value="#application.applicationID"/><br/>

    application范围EL:${applicationScope.applicationID }

  

</body>

结果


>append

<body>

    <s:append var="appendTest">

       <s:param value="{'a','b','c'}"></s:param>

       <s:param value="{'A','B','C'}"></s:param>

    </s:append>


    <s:iterator value="#appendTest">

       <s:property/>

    </s:iterator>

  </body>

结果:


>merge

<body>

   

    <s:merge var="mergeTest">

       <s:param value="{'a','b','c'}"></s:param>

       <s:param value="{'A','B','C'}"></s:param>

    </s:merge>

   

    <s:iterator value="#mergeTest">

       <s:property/>

    </s:iterator>

 

 

  </body>

结果


>generator

 

<body>

  <s:bean name="com.mycom.action.MyConverter"  var="myConverter"></s:bean>

   <s:generator separator="," val="%{'aaaa,bbbb,cccc'}" count="2">

        <s:iterator>

           <s:property/>

        </s:iterator>

   </s:generator>

   <br/>---------------------------------------------------------------------------<br/>

    <s:generator separator="," val="%{'aaaa,bbbb,cccc'}" count="3" converter="myConverter">

        <s:iterator>

           <s:property/>

        </s:iterator>

   </s:generator>

   <br/>---------------------------------------------------------------------------<br/>

  

  </body>

Myconverter.java

package com.mycom.action;

import org.apache.struts2.util.IteratorGenerator.Converter;

publicclass MyConverter implements Converter {

   

    @Override

    public Object convert(String token) throws Exception {

       // TODO Auto-generated method stub

       return"Convertor-"+token;

    }

}

 

结果:


>subset

subsetTag.jsp

<body>

    <s:subset source="{'aaa','bbb','ccc','ddd'}" start="1" count="2" >

    <s:iterator>

        <s:property/>

    </s:iterator>

    </s:subset>

    <br/>-------------------------------------------------------------<br/>

    <s:subset source="myList" start="0" count="2" decider="myDecider" > //注意此处的myDecider对应action中的getMydecider

    <s:iterator>

        <s:property/>

    </s:iterator>

    </s:subset>

  </body>

SubsetTagTestAction.java

package com.mycom.action;

import java.util.ArrayList;

import java.util.List;
 
import org.apache.struts2.util.IteratorGenerator.Converter;

import org.apache.struts2.util.SubsetIteratorFilter.Decider;

import com.opensymphony.xwork2.ActionSupport;
 

public class SubsetTagTestAction extends ActionSupport {

         private List myList;

         private Decider myDecider;

         @Override

         public String execute() throws Exception {

                   myList = new ArrayList<String>();

                   myList.add("AAA");

                   myList.add("BBB");

                   myList.add("CCC");

                   myList.add("DDD");

                   myList.add("EEE");

                   return SUCCESS;

         }

         public List getMyList() {

                   return myList;

         }

         public Decider getMyDecider() {

                   return new Decider(){

 

                            @Override

                            public boolean decide(Object element) throws Exception {

                                     if((String)element == "AAA")

                                               return false;

                                     return true;

                            }


                   };

         }

}

 在struts.xml中配置action ,后在IE里输入:http://localhost/strutstag/subsetTagAction

结果:


>sort

    <s:sort comparator="myCompartor" source="myList" var="sortTest"> //注意此处的myCompartor对应action中的myCompartor

        <s:iterator>

           <s:property/>

        </s:iterator>

   </s:sort>

SortTagTestAction.java

package com.mycom.action;


import java.util.ArrayList;

import java.util.Comparator;

import java.util.List;

import org.apache.struts2.util.IteratorGenerator.Converter;

import org.apache.struts2.util.SubsetIteratorFilter.Decider;

import com.opensymphony.xwork2.ActionSupport;

public class SortTagTestAction extends ActionSupport {
         private List myList;

         private Comparator<String> myCompartor;

         @Override

         public String execute() throws Exception {

                   myList = new ArrayList<String>();

                   myList.add("AAA");

                   myList.add("CCC");

                   myList.add("BBB");

                   myList.add("EEE");

                   myList.add("DDD");

                   return SUCCESS;

         }

         public List getMyList() {

                   return myList;

         }

         public Comparator<String> getMyCompartor() {

                   return new Comparator<String>(){

                            @Override

                            public int compare(String o1, String o2) {

                                     // TODO Auto-generated method stub

                                     return o1.compareTo(o2);

                            }

                   };

         }

}

同上配置action,IE中输入http://localhost/strutstag/SortTagAction得结果


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值