Struts2 标签库(上)[Tablib]

来源:互联网 发布:js设置css样式属性 编辑:程序博客网 时间:2024/05/19 10:39
http://blog.163.com/zrj_518/blog/static/197000020083322713735/Struts2 Taglib抽象了不同表示技术,现在Struts2主要支持三种表示技术:JSP,FreeMarker和Velocity。但部分的Tag在三种表示技术下都可以使用,但是也有部分只能在某一种情况下使用。 Tab可以分为两类:通用标签和UI标签。一、通用标签通用标签用来在页面表示的时候控制代码执行的过程,这些标签也允许从Action或者值堆栈中取得数据。例如地域,JavaBeans,URLs,和action。 控制标签控制程序执行,例如:if,else,iterator数据标签管理数据的取得和创建,例如:bean,push,i18n 控制标签 if标签描述  If标签用来控制基本的条件处理流程,通常和else标签或者elseif标签连用。 参数名字是否必须默认值可否使用表达式类型描述id否 是String    用来表示该元素,对于UI和Form标签来说直接转变为HTML id属性test   是 是Boolean   用来决定是否显示标签内部内容的表达式 例子<s:if test="%{false}">    <div>Will Not Be Executed</div></s:if><s:elseif test="%{true}">    <div>Will Be Executed</div></s:elseif><s:else>    <div>Will Not Be Executed</div></s:else> elseIf 标签参考if标签 else 标签参考if标签  append标签描述用来做iterator标签的辅助,将不同iterator中的内容合在一个iterator中。 参数名字是否必须默认值可否使用表达式类型描述id否 是String用来保存结果iterator的对象在value context中的名字  例子Action类public class AppendIteratorTagAction extends ActionSupport {  private List myList1; private List myList2; private List myList3;   public String execute() throws Exception {      myList1 = new ArrayList();     myList1.add("1");     myList1.add("2");     myList1.add("3");      myList2 = new ArrayList();     myList2.add("a");     myList2.add("b");     myList2.add("c");      myList3 = new ArrayList();     myList3.add("A");     myList3.add("B");     myList3.add("C");      return "done"; }  public List getMyList1() { return myList1; } public List getMyList2() { return myList2; } public List getMyList3() { return myList3; } 标签使用<s:append id="myAppendIterator">     <s:param value="%{myList1}" />     <s:param value="%{myList2}" />     <s:param value="%{myList3}" /></s:append><s:iterator value="%{#myAppendIterator}">     <s:property /></s:iterator> generator 标签(JSP Tag)描述从val属性生成一个iterator。 参数例子例1:生成一个简单的iterator,并且使用iterator标签打印出内容。<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}"> <s:iterator>     <s:property /><br/> </s:iterator></s:generator> 例2:生成一个iterator,使用count属性。因为count属性值为3,所以只有前三个内容(aaa,bbb,ccc)在生成的iterator中。Generate an iterator with count attribute<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}" count="3"> <s:iterator>     <s:property /><br/> </s:iterator></s:generator>  例3:生成iterator,使用了id属性,之后生成的对象放在pageContext中,可以通过指定的id来访问。<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}" count="4" separator="," id="myAtt" /><% Iterator i = (Iterator) pageContext.getAttribute("myAtt"); while(i.hasNext()) {     String s = (String) i.next();%>     <%= s %> <br/><%} %> 例4:生成iterator,使用converter属性,这里的convertor仅仅将每一个对象添加了一个"converter-"前缀。<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}" converter="%{myConverter}"> <s:iterator>     <s:property /><br/> </s:iterator></s:generator>  public class GeneratorTagAction extends ActionSupport {   ....   public Converter getMyConverter() {     return new Converter() {         public Object convert(String value) throws Exception {             return "converter-"+value;         }     };  }   ... }   iterator 标签描述迭代处理一个java.util.Connection或者java.util.Iterator对象 参数名字是否必须默认值可否使用表达式类型描述id否 是StringIdstatus否否是Boolean如果指定,在循环的过程中会保留一个IteratorStatus类型的变量,该变量用来查询当前迭代的状态value否 是String被迭代的对象例子例1:<s:iterator value="days">  <p>day is: <s:property/></p></s:iterator> 例2:<s:bean name="org.apache.struts2.example.IteratorExample" id="it">  <s:param name="day" value="'foo'"/>  <s:param name="day" value="'bar'"/></s:bean><p/><table border="0" cellspacing="0" cellpadding="1"><tr>  <th>Days of the week</th></tr><p/><s:iterator value="#it.days" status="rowstatus">  <tr>    <s:if test="#rowstatus.odd == true">      <td style="background: grey"><s:property/></td>    </s:if>    <s:else>      <td><s:property/></td>    </s:else>  </tr></s:iterator></table> 例3:<s:iterator value="groupDao.groups" status="groupStatus">     <tr class="<s:if test="#groupStatus.odd == true ">odd</s:if><s:else>even</s:else>">         <td><s:property value="name" /></td>         <td><s:property value="description" /></td>         <td>             <s:iterator value="users" status="userStatus">                 <s:property value="fullName" /><s:if test="!#userStatus.last">,</s:if>             </s:iterator>         </td>     </tr> </s:iterator>  merge 标签(同append?)描述参数例子       sort 标签(JSP-Tag)描述对一个可以迭代的对象进行排序操作。 参数名字是否必须默认值可否使用表达式类型描述Comparator是 是java.util.Comparator排序用的比较器Source否 是String排序对象 例子例1:<s:sort comparator="myComparator" source="myList">     <s:iterator>     <!-- do something with each sorted elements -->         <s:property value="..." />     </s:iterator></s:sort> 例2:<s:sort id="mySortedList" comparator="myComparator" source="myList" /><%   Iterator sortedIterator = (Iterator) pageContext.getAttribute("mySortedList");   for (Iterator i = sortedIterator; i.hasNext(); ) {     // do something with each of the sorted elements   }%>      subset描述递归iterator的一部分 参数名字是否必须默认值可否使用表达式类型描述countFalse 是IntegerIterator中被递归的一部分的item的数量Decider否 是org.apache.struts2.util. SubsetIteratorFilter.Decider用来判断iterator中的item是否包含在最终的subset内部Source否 是StringIterator的对象Start否 是Integer开始位置 例子Java类 public class MySubsetTagAction extends ActionSupport {     public String execute() throws Exception {        l = new ArrayList();        l.add(new Integer(1));        l.add(new Integer(2));        l.add(new Integer(3));        l.add(new Integer(4));        l.add(new Integer(5));        return "done";     }       public Integer[] getMyArray() {        return a;     }      public List getMyList() {        return l;      }      public Decider getMyDecider() {     return new Decider() {         public boolean decide(Object element) throws Exception {             int i = ((Integer)element).intValue();             return (((i % 2) == 0)?true:false);         }     };     } }<!-- s: List basic -->   <s:subset source="myList">      <s:iterator>         <s:property />      </s:iterator>   </s:subset><!-- B: List with count -->   <s:subset source="myList" count="3">      <s:iterator>          <s:property />      </s:iterator>    </s:subset><!--  C: List with start -->     <s:subset source="myList" count="13" start="3">        <s:iterator>          <s:property />        </s:iterator>     </s:subset><!--  D: List with id -->     <s:subset id="mySubset" source="myList" count="13" start="3" />     <%         Iterator i = (Iterator) pageContext.getAttribute("mySubset");         while(i.hasNext()) {     %>     <%=i.next() %>     <%  } %><!--  D: List with Decider -->    <s:subset source="myList" decider="myDecider">           <s:iterator>                <s:property />           </s:iterator></s:subset>         数据标签@TODO 完成如下数据标签数据标签包括aactionbeandatedebugi18nincludeparampushsettexturlproperty


原创粉丝点击