Struth2標籤

 Struts 2.1 Tags

最近學習  Struts 2.1 Tags 做了些筆記,貼出來大家一起學習下,希望大家多多交流。

 

別的都不說了,我就貼代碼,代碼裏註釋比較詳細,呵呵。
 

文件目錄,如下:

 

 

 index.jsp 代碼

Java代碼 複製代碼 收藏代碼
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>   
  2. <%@page import="com.rao.bean.Sex"%>   
  3. <%@ taglib prefix="s" uri="/struts-tags"%>   
  4. <%@ taglib prefix="sx" uri="/struts-dojo-tags"%>   
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
  6. <html>   
  7. <head>   
  8.   <title>My page</title>   
  9.   <s:head theme="xhtml"/>   
  10.   <sx:head parseContent="true"/>   
  11. </head>   
  12.   
  13.   <body>   
  14.     Struts 2.1 Tags   
  15.     <br/>   
  16.     <br/>   
  17.     一、控制標籤<br/><hr size="3" color="red">   
  18.        
  19.      #、if /elseif/ else @用於邏輯判斷<br/>   
  20.      <s:set name="bir" value="-12"></s:set>   
  21.      <s:if test="#bir>=180 || #bir<0">   
  22.         你是何方妖怪?   
  23.      </s:if>   
  24.      <s:elseif test="#bir<=18 && #bir>=0">   
  25.         未成年人不能進入!   
  26.      </s:elseif>   
  27.      <s:elseif test="#bir<=60 && #bir>=18">   
  28.         您已經成年!   
  29.      </s:elseif>   
  30.      <s:else>   
  31.         您已經老了!   
  32.      </s:else>   
  33.      <br/>--------------------------------------------------------------<br/>   
  34.      #、append @用於將多個集合合併<br/>   
  35.      <s:set name="appList1" value="{'111','222','333','444'}"></s:set>   
  36.      <s:set name="appList2" value="{'aaa','bbb','ccc','ddd'}"></s:set>   
  37.      <s:append var="newAppList">   
  38.         <s:param value="appList1"></s:param>   
  39.         <s:param value="appList2"></s:param>   
  40.      </s:append>   
  41.      <s:iterator value="#newAppList">   
  42.         <s:property/> |    
  43.      </s:iterator>   
  44.       <br/>--------------------------------------------------------------<br/>   
  45.      #、generator  <br/>   
  46.      generator標籤,該標籤可以將指定字符串按指定分隔符分割成多個字串。生成的多個字串可以用iterator標籤進行迭代輸出。可以這麼理解:generator標籤將一個字符串轉換成一個List集合。在該標籤體內,整個臨時生成的集合將爲Valuestack的頂端,但一旦該標籤結束,生成的集合將被移除Valuestack。generator標籤有如下幾個屬性:   
  47.     <br/>   
  48.     1、count屬性:指定生成集合中元素的總數。可選屬性。<br/>   
  49.        
  50.     2、val屬性:必填屬性,指定被解析的字符串。<br/>   
  51.        
  52.     3、separator屬性:這是一個必填屬性,指定用於分割字符串的分隔符。<br/>   
  53.        
  54.     4、converter屬性:可選屬性,指定一個轉換器,轉換器負責將生成的集合中的每個字符串轉換成對象,通過這個轉換器可以將一個含有分隔符的字符串解析成對象的集合。轉換器必須一個繼承org.apache.struts2.util.IteratorGenerator.Converter的對象。   
  55.     <br/>   
  56.     5、var屬性,可選屬性。如果指定了該屬性,則將生成的集合保存在Stack Context中。如果不指定該屬性,則將生成的集合放入ValueStack的頂端,該標籤一結束,生成的集合就被移除。該屬性也可替換成id。   
  57.     <br/>   
  58.      <s:generator  val="'aaa,bbb,ccc,ddd'"  separator="," count="2">   
  59.         <s:iterator>   
  60.             <s:property/>   
  61.         </s:iterator>   
  62.      </s:generator><br/>   
  63.   
  64.       <br/>--------------------------------------------------------------<br/>   
  65.      #、iterator 用於迭代數據<br/>   
  66.      <s:set name="iterList" value="{'aaa','bbb','ccc','ddd'}"></s:set>   
  67.      <table border="1">   
  68.      <tr>      
  69.                 <td>   索引   </td>      
  70.                 <td>   值   </td>      
  71.                 <td>   奇?   </td>      
  72.                 <td>   偶?    </td>      
  73.                 <td>   首?    </td>      
  74.                 <td>   尾?    </td>      
  75.                 <td>  當前迭代數量    </td>      
  76.             </tr>      
  77.         
  78.         <s:iterator value="{'aaa','bbb','ccc','ddd','eee','fff'}" begin="1" status="s">   
  79.             <tr bgcolor="<s:if test="#s.odd">pink</s:if>">   
  80.                 <td><s:property value="#s.index"/></td>   
  81.                 <td><s:property/></td>   
  82.                 <td><s:property value="#s.even"/></td>   
  83.                 <td><s:property value="#s.odd"/></td>   
  84.                 <td><s:property value="#s.first"/></td>   
  85.                 <td><s:property value="#s.last"/></td>   
  86.                 <td><s:property value="#s.count"/></td>   
  87.             </tr>   
  88.         </s:iterator>         
  89.      </table>   
  90.         
  91.         
  92.       <br/>--------------------------------------------------------------<br/>   
  93.      #、merge @和類似:用於將多個集合合併<br/>   
  94.      <s:set name="merList1" value="{'111','222','333','444'}"></s:set>   
  95.      <s:set name="merList2" value="{'aaa','bbb','ccc','ddd'}"></s:set>   
  96.      <s:append var="newMerList">   
  97.         <s:param value="merList1"></s:param>   
  98.         <s:param value="merList2"></s:param>   
  99.      </s:append>   
  100.      <s:iterator value="#newMerList">   
  101.         <s:property/> |    
  102.      </s:iterator>   
  103.       <br/>--------------------------------------------------------------<br/>   
  104.      #、sort @用於排序<br/>   
  105.      <s:bean var="myComparator" name="com.rao.comparator.MyComparator"></s:bean>   
  106.      <s:sort comparator="#myComparator" source="{1,45,56,0,345,3}">   
  107.         <s:iterator>   
  108.             <s:property/>,   
  109.         </s:iterator>   
  110.      </s:sort>   
  111.       <br/>--------------------------------------------------------------<br/>   
  112.      #、subset @用戶截取集合中的子集;   注:decider:可選屬性,指定由開發者自己決定是否選中該元素.     
  113.      <br/>   
  114.      <s:set name="subList" value="{'@@@','***','&&&','###'}"></s:set>   
  115.      <s:subset source="#subList" start="1" count="2">   
  116.         <s:iterator>   
  117.             <s:property/>,   
  118.         </s:iterator>   
  119.      </s:subset>   
  120.       <br/>--------------------------------------------------------------<br/>   
  121.        二、數據標籤<br/>   
  122.       <hr size="3" color="red">   
  123.     #、action @用於導入一個Action<br/>   
  124.     使用action標籤,可以允許在jsp頁面中直接調用Action,在調用Action時候,可以指定需要被調用的Action的name和namespace.如果指定了executeResult參數的屬性值爲true,該標籤會把Action的處理結果(視圖資源)包含到本頁面中. 使用action標籤指定屬性有:   
  125.     <br/>   
  126.     id: 可選屬性,作爲該Action的引用ID   <br/>    
  127.       
  128.     name:必選屬性,指定調用Action    <br/>   
  129.           
  130.     namespace:可選屬性,指定該標籤調用Action所屬namespace    <br/>   
  131.           
  132.     executeResult:可選屬性,指定是否將Action的處理結果包含到本頁面中.默認值爲false,不包含.    <br/>   
  133.           
  134.     ignoreContextParam:可選參數,指定該頁面的請求參數是否需要傳入調用的Action中,默認值是false,即傳入參數.<br/>   
  135.        
  136.     s:param是以request方式的值的,而不是以參數傳值,所以request.getParameter("")會獲取不到值,通過request.getAttribute("")方式可以獲取<br/>   
  137.   
  138.     <s:action name="tagsAction1" ignoreContextParams="true" executeResult="true" namespace="/com/rao">   
  139.         <s:param name="userName" value="'三毛'"></s:param>   
  140.     </s:action>   
  141.        
  142.       <br/>--------------------------------------------------------------<br/>   
  143.     #、bean @用於導入一個javaBean,相當於:jsp:useBean 標籤<br/>   
  144.     <s:bean name="com.rao.bean.UserBean" var="user">   
  145.         <s:param name="userId" value="1001"></s:param>   
  146.         <s:param name="userName" value="'張三'"></s:param>   
  147.     </s:bean>   
  148.     userId:<s:property value="#user.userId"/><br>   
  149.     userName:<s:property value="#user.userName"/>   
  150.       <br/>--------------------------------------------------------------<br/>   
  151.     #、date @用於格式化日期<br/>   
  152.     <s:set name="dt" value="new java.util.Date()"></s:set>   
  153.     當期系統時間是:<s:date name="dt" format="yyyy-MM-dd HH:ss:mm"/>   
  154.       <br/>--------------------------------------------------------------<br/>   
  155.     #、debug @用於調試程序,讓開發人員一目瞭然的知道當前請求、值棧、棧中的各項參數<br/>   
  156.     <s:debug/>   
  157.       <br/>--------------------------------------------------------------<br/>   
  158.     #、i18n @用於訪問國際化資源文件的內容<br/>   
  159.                 1.默認訪問全局範圍內的資源文件;   
  160.                 <br>   
  161.                 <s:text name="welcome">   
  162.                     <s:param>三毛</s:param>   
  163.                     <s:param>學習</s:param>   
  164.                 </s:text>   
  165.            
  166.                 <hr>   
  167.                 2.訪問包範圍內的資源文件;   
  168.                 <br>   
  169.                 <s:i18n name="com/rao/action/package">   
  170.                     <s:text name="welcome">   
  171.                         <s:param>三毛</s:param>   
  172.                         <s:param>學習</s:param>   
  173.                     </s:text>   
  174.                 </s:i18n>   
  175.                 <hr>   
  176.                 3.訪問Action範圍內的資源文件;   
  177.                 <br>   
  178.                 <s:i18n name="com/rao/action/GlobalNativeAction">   
  179.                     <s:text name="welcome">   
  180.                         <s:param>三毛</s:param>   
  181.                         <s:param>學習</s:param>   
  182.                     </s:text>   
  183.                 </s:i18n>   
  184.       <br/>--------------------------------------------------------------<br/>   
  185.     #、include @用於導入一個jsp文件,等同於:jsp:include標籤<br/>   
  186.     <s:include value="success.jsp"></s:include>   
  187.       <br/>--------------------------------------------------------------<br/>   
  188.     #、param @用於給指定參數設置值<br/>   
  189.     <s:bean name="com.rao.bean.UserBean" var="user">   
  190.         <s:param name="userId" value="1001"></s:param>   
  191.         <s:param name="userName" value="'張三'"></s:param>   
  192.     </s:bean>   
  193.     userId:<s:property value="#user.userId"/><br>   
  194.     userName:<s:property value="#user.userName"/>   
  195.       <br/>--------------------------------------------------------------<br/>   
  196.     #、property @輸出結果,很像EL表達式,但是可以依託於OGNL錶帶是很強大<br/>   
  197.     同上   
  198.       <br/>--------------------------------------------------------------<br/>   
  199.     #、push @該標籤可以把程序員在ActionContext中引用的對像壓入valuestack中,爲以後訪問對象提供了方便<br/>   
  200.     <s:push value="#request.user"><s:property value="userName"/></s:push>   
  201.       <br/>--------------------------------------------------------------<br/>   
  202.     #、set @用戶聲明對象或屬性<br/>   
  203.     <s:set name="uName" value="#request.user.userName"></s:set>   
  204.     <s:property value="#uName"/>,你好啊!   
  205.       <br/>--------------------------------------------------------------<br/>   
  206.     #、text @用戶獲取國際化資源文件的內容<br/>   
  207.     請參考 il8n標籤   
  208.       <br/>--------------------------------------------------------------<br/>   
  209.     #、url @用於組拼一個請求路徑<br/>   
  210.     <s:url var="url1" action="MyAction" method="add">   
  211.         <s:param name="id" value="%{23}"></s:param>   
  212.         <s:param name="name" value="%{'tom'}"></s:param>   
  213.     </s:url>   
  214.     <s:property value="#url1"/>   
  215.     <br/>   
  216.     注意:<br/>      
  217.         <s:set name="myurl" value="'http://www.baidu.com'"></s:set>      
  218.         value以字符處理:   <s:url value="#myurl"></s:url><br>      
  219.         value明確指定以ognl表達式處理:    <s:url value="%{#myurl}"></s:url>      
  220.        
  221.       <br/>--------------------------------------------------------------<br/>   
  222.        
  223.        三、UI標籤<br/>   
  224.     <hr size="3" color="red">   
  225.     <s:form>   
  226.     #、checkboxlist @複選框列表<br>   
  227.          1> .list 生成;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>      
  228.         name:checkboxlist的名字<br>      
  229.         list:checkboxlist要顯示的列表<br>      
  230.         value:checkboxlist默認被選中的選項,checked=checked<br>      
  231.         <s:checkboxlist theme="simple" name="checkbox1" list="{'上網','看書','爬山','游泳','唱歌'}" value="{'上網','看書'}" ></s:checkboxlist>      
  232.         <br>      
  233.           
  234.         2> .Map 生成;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>      
  235.         name:checkboxlist的名字<br>      
  236.         list:checkboxlist要顯示的列表<br>      
  237.         listKey:checkbox 的value的值<br>      
  238.         listValue:checkbox 的lablel(顯示的值)<br>      
  239.         value:checkboxlist默認被選中的選項,checked=checked<br>      
  240.         <s:checkboxlist theme="simple" name="checkbox2" list="#{1:'上網',2:'看書',3:'爬山',4:'游泳',5:'唱歌'}" listKey="key" listValue="value" value="{1,2,5}" ></s:checkboxlist>      
  241.      
  242.          <br/>--------------------------------------------------------------<br/>   
  243.      #、combobox <br/>   
  244.     <s:combobox theme="simple" label="選擇你喜歡的顏色" name="colorNames"  headerValue="------請選擇------" headerKey="1"  list="{'紅','橙','黃','綠','青','藍','紫'}" />    
  245.     <br/>--------------------------------------------------------------<br/>   
  246.      #、radio @單選框<br/>    
  247.          <%      
  248.             Sex sex1 = new Sex(1,"男");       
  249.             Sex sex2 = new Sex(2,"女");      
  250.             List<Sex> list = new ArrayList<Sex>();       
  251.             list.add(sex1);      
  252.             list.add(sex2);      
  253.             request.setAttribute("sexs",list);       
  254.         %>      
  255.                       這個與checkboxlist差不多;<br>      
  256.         1>.如果集合爲javabean:<s:radio theme="simple" name="sex" list="#request.sexs" listKey="id" listValue="name"></s:radio><br>      
  257.         2>.如果集合爲list:<s:radio theme="simple" name="sexList" list="{'男','女'}"></s:radio><br>      
  258.         3>.如果集合爲map:<s:radio theme="simple" name="sexMap" list="#{1:'男',2:'女'}" listKey="key" listValue="value"></s:radio><br>      
  259.         <hr>      
  260.      <br/>--------------------------------------------------------------<br/>   
  261.      #、select @下拉列表框<br/>     
  262.         這個與s:checkboxlist差不多;<br>      
  263.         1>.如果集合爲javabean:<s:select theme="simple" name="sex" list="#request.sexs" listKey="id" listValue="name"></s:select><br>      
  264.         2>.如果集合爲list:<s:select theme="simple" name="sexList" list="{'男','女'}"></s:select><br>      
  265.         3>.如果集合爲map:<s:select theme="simple" name="sexMap" list="#{1:'男',2:'女'}" listKey="key" listValue="value"></s:select><br>      
  266.         
  267.      <br/>--------------------------------------------------------------<br/>   
  268.      #、doubleselect @級聯菜單 <br/>   
  269.     <!--   可以用直接指定,當然也可以跟數據庫綁定的 -->   
  270.      <s:set name="proviList" value="{'江西省','湖北省'}"></s:set>   
  271.      <s:set name="jxList" value="{'南昌市','贛州市','九江市','上饒市','鷹潭市'}"></s:set>   
  272.      <s:set name="hbList" value="{'武漢市','恩施市','十堰市','荊州市','襄樊市'}"></s:set>   
  273.      <s:doubleselect theme="simple"  name="provi" doubleList="top=='江西省' ? #jxList : #hbList" list="#proviList" doubleName="city"></s:doubleselect>   
  274.      <br/>--------------------------------------------------------------<br/>   
  275.      #、optiontransferselect <br/>   
  276.      <s:optiontransferselect theme="simple" label="change" name="abc" doubleList="{'111','222','333','444'}" list="{'aaa','bbb','ccc','ddd'}" doubleName="number"></s:optiontransferselect>   
  277.      <br/>--------------------------------------------------------------<br/>   
  278.      #、updownselect @可上下選擇的select <br/>   
  279.      <s:updownselect label="selectCity" emptyOption="true" name="selectCity" list="#jxList" headerValue="-Please Select The City-" headerKey="-1"></s:updownselect>   
  280.       <br/>--------------------------------------------------------------<br/>   
  281.      #、sx:datetimepicker @日期選擇控件 <br/>   
  282.      使用步驟:聲明:我這裏用的是strut 2.1.8.1,在struts2.0的版本中可能有所不同;<br/>   
  283.               1.導入struts2-dojo-plugin-2.1.8.1.jar DoJo 插件包;<br/>   
  284.               2. 導入標籤:<%--@ taglib prefix="sx" uri="/struts-dojo-tags"--%>;<br/>   
  285.               3.在需要使用的頁面中的head標籤之間加上<%-- <sx:head parseContent="true"/> --%>;<br/>   
  286.      <sx:datetimepicker label="birthday" name="bir" value="#dt"></sx:datetimepicker>   
  287.       <br/>--------------------------------------------------------------<br/>   
  288.      #、sx:tabbedpanel @選項卡控件 <br/>   
  289.       聲明:這個標籤代碼轉至:http://blog.sina.com.cn/s/blog_6145ed810100ecud.html,版權歸作者所有;寫的挺好拿來大家共同學習。   
  290.         
  291.       <!-- tabbedpanel標籤 -->   
  292.         <!-- 最簡單的選項卡,兩個選項卡加載都是本頁面 -->   
  293.           <hr color="blue">   
  294.           <b>最簡單的選項卡:</b>   
  295.           <br>   
  296.                 <sx:tabbedpanel id="tab1" beforeSelectTabNotifyTopics="/beforeSelect">   
  297.              <sx:div label="Tab 1" >   
  298.                  Local Tab 1  
  299.              </sx:div>     
  300.              <sx:div label="Tab 2" >   
  301.                  Local Tab 2  
  302.              </sx:div>     
  303.                 </sx:tabbedpanel>   
  304.            
  305.            
  306.         <!-- 加載其他頁面的選項卡 -->   
  307.           <hr color="blue">   
  308.           <b>加載其他頁面的選項卡:</b>   
  309.           <br>   
  310.           <sx:tabbedpanel id="tab2">   
  311.           <sx:div label="Remote Tab 1" href="upload.jsp">   
  312.                      Remote Tab 1  
  313.                 </sx:div>   
  314.              <sx:div label="Remote Tab 2" href="multipleUpload.jsp" >   
  315.                      Remote Tab 1  
  316.                 </sx:div>   
  317.           </sx:tabbedpanel>   
  318.            
  319.            
  320.         <!-- 設置選項卡底下的內容懶加載,即等需要的時候再加載,使用屬性preload="false"-->   
  321.           <hr color="blue">   
  322.           <b>設置選項卡底下的內容懶加載,即等需要的時候再加載,使用屬性preload="false":</b>   
  323.           <br>   
  324.                 <sx:tabbedpanel id="tab3">   
  325.              <sx:div label="Remote Tab 1" href="upload.jsp">   
  326.                  Remote Tab 1  
  327.              </sx:div>    
  328.              <sx:div label="Remote Tab 2" href="multipleUpload.jsp" preload="false">   
  329.                  Remote Tab 1  
  330.              </sx:div>        
  331.                 </sx:tabbedpanel>   
  332.            
  333.            
  334.         <!-- 固定大小的選項卡 -->   
  335.           <hr color="blue">   
  336.           <b>固定大小的選項卡,使用屬性cssStyle和doLayout:</b>   
  337.           <br>   
  338.                 <sx:tabbedpanel cssStyle="width: 200px; height: 100px;" doLayout="true" id="tab4">   
  339.              <sx:div label="Tab 1" >   
  340.                  Local Tab 1  
  341.              </sx:div>     
  342.              <sx:div label="Tab 2" >   
  343.                  Local Tab 2  
  344.              </sx:div>     
  345.                 </sx:tabbedpanel>   
  346.            
  347.            
  348.         <!-- 每次點擊選項卡時都重新刷新內容 -->   
  349.           <hr color="blue">   
  350.           <b>每次點擊選項卡時都重新刷新內容,使用屬性refreshOnShow:</b>   
  351.           <br>   
  352.           <sx:tabbedpanel id="tab5">   
  353.              <sx:div label="Remote Tab 1" href="upload.jsp" refreshOnShow="true">   
  354.                  Remote Tab 1  
  355.              </sx:div>    
  356.              <sx:div label="Remote Tab 2" href="multipleUpload.jsp" refreshOnShow="true">   
  357.                  Remote Tab 2  
  358.              </sx:div>        
  359.           </sx:tabbedpanel>   
  360.            
  361.             
  362.            
  363.         <!-- 使得其中一個選項卡失效 -->   
  364.           <hr color="blue">   
  365.           <b>使得其中一個選項卡失效:</b>   
  366.           <br>   
  367.                  <sx:tabbedpanel id="tab6">   
  368.             <sx:div label="Tab 1" >   
  369.                 Local Tab 1  
  370.             </sx:div>     
  371.             <sx:div label="Tab 2" disabled="true">   
  372.                 Local Tab 2  
  373.             </sx:div>     
  374.                 </sx:tabbedpanel>   
  375.            
  376.            
  377.         <!-- 設置選項卡在底部顯示 (可以是: top, right, bottom, left) -->   
  378.           <hr color="blue">   
  379.           <b>設置選項卡在底部顯示 (可以是: top, right, bottom, left):</b>   
  380.           <br>   
  381.           <sx:tabbedpanel id="tab7" labelposition="bottom" cssStyle="width:200px;height:100px;" doLayout="true">   
  382.              <sx:div label="Tab 1" >   
  383.                  Local Tab 1  
  384.              </sx:div>     
  385.              <sx:div label="Tab 2" >   
  386.                  Local Tab 2  
  387.              </sx:div>     
  388.           </sx:tabbedpanel>   
  389.            
  390.         <!-- 設置選項卡允許關閉,使用屬性closeable -->   
  391.           <hr color="blue">   
  392.           <b>設置選項卡允許關閉,使用屬性closeable:</b>   
  393.           <br>          
  394.           <sx:tabbedpanel id="tab8">   
  395.              <sx:div label="Tab 1" >   
  396.                  Local Tab 1  
  397.              </sx:div>     
  398.              <sx:div label="Tab 2"  closable="true">   
  399.                  Local Tab 2  
  400.              </sx:div>     
  401.           </sx:tabbedpanel>   
  402.   
  403.      <br/>--------------------------------------------------------------<br/>   
  404.      #、sx:textarea @textarea控件 <br/>   
  405.      <sx:textarea label="簡介" value="sx:textareasx:textareasx:<br/>textareasx:textareasx:textareasx:<br/>textareasx:textareasx:<br/>textareasx:textarea"></sx:textarea>   
  406.         
  407.      <br/>--------------------------------------------------------------<br/>   
  408.      #、sx:tree @樹控件 <br/>   
  409.      <sx:tree id="tree1" label="根節點">   
  410.        <sx:treenode id="tn1" label="財務部" />   
  411.        <sx:treenode id="tn2" label="開發部">   
  412.            <sx:treenode id="tn3" label="JAVA" />   
  413.            <sx:treenode id="tn4" label=".NET" />   
  414.        </sx:treenode>   
  415.        <sx:treenode id="tn5" label="人事部" />   
  416.     </sx:tree>   
  417.         
  418.  </s:form>      
  419.         
  420.   </body>   
  421. </html>  
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="com.rao.bean.Sex"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>My page</title>
  <s:head theme="xhtml"/>
  <sx:head parseContent="true"/>
</head>

  <body>
    Struts 2.1 Tags
    <br/>
    <br/>
    一、控制標籤<br/><hr size="3" color="red">
    
     #、if /elseif/ else @用於邏輯判斷<br/>
     <s:set name="bir" value="-12"></s:set>
     <s:if test="#bir>=180 || #bir<0">
     	你是何方妖怪?
     </s:if>
     <s:elseif test="#bir<=18 && #bir>=0">
     	未成年人不能進入!
     </s:elseif>
     <s:elseif test="#bir<=60 && #bir>=18">
     	您已經成年!
     </s:elseif>
     <s:else>
     	您已經老了!
     </s:else>
     <br/>--------------------------------------------------------------<br/>
	 #、append @用於將多個集合合併<br/>
	 <s:set name="appList1" value="{'111','222','333','444'}"></s:set>
	 <s:set name="appList2" value="{'aaa','bbb','ccc','ddd'}"></s:set>
	 <s:append var="newAppList">
	 	<s:param value="appList1"></s:param>
	 	<s:param value="appList2"></s:param>
	 </s:append>
	 <s:iterator value="#newAppList">
	 	<s:property/> | 
	 </s:iterator>
	  <br/>--------------------------------------------------------------<br/>
	 #、generator  <br/>
	 generator標籤,該標籤可以將指定字符串按指定分隔符分割成多個字串。生成的多個字串可以用iterator標籤進行迭代輸出。可以這麼理解:generator標籤將一個字符串轉換成一個List集合。在該標籤體內,整個臨時生成的集合將爲Valuestack的頂端,但一旦該標籤結束,生成的集合將被移除Valuestack。generator標籤有如下幾個屬性:
	<br/>
	1、count屬性:指定生成集合中元素的總數。可選屬性。<br/>
	
	2、val屬性:必填屬性,指定被解析的字符串。<br/>
	
	3、separator屬性:這是一個必填屬性,指定用於分割字符串的分隔符。<br/>
	
	4、converter屬性:可選屬性,指定一個轉換器,轉換器負責將生成的集合中的每個字符串轉換成對象,通過這個轉換器可以將一個含有分隔符的字符串解析成對象的集合。轉換器必須一個繼承org.apache.struts2.util.IteratorGenerator.Converter的對象。
	<br/>
	5、var屬性,可選屬性。如果指定了該屬性,則將生成的集合保存在Stack Context中。如果不指定該屬性,則將生成的集合放入ValueStack的頂端,該標籤一結束,生成的集合就被移除。該屬性也可替換成id。
	<br/>
	 <s:generator  val="'aaa,bbb,ccc,ddd'"  separator="," count="2">
	 	<s:iterator>
	 		<s:property/>
	 	</s:iterator>
	 </s:generator><br/>

	  <br/>--------------------------------------------------------------<br/>
	 #、iterator 用於迭代數據<br/>
	 <s:set name="iterList" value="{'aaa','bbb','ccc','ddd'}"></s:set>
	 <table border="1">
	 <tr>   
                <td>   索引   </td>   
                <td>   值   </td>   
                <td>   奇?   </td>   
                <td>   偶?    </td>   
                <td>   首?    </td>   
                <td>   尾?    </td>   
                <td>  當前迭代數量    </td>   
            </tr>   
	 
		<s:iterator value="{'aaa','bbb','ccc','ddd','eee','fff'}" begin="1" status="s">
			<tr bgcolor="<s:if test="#s.odd">pink</s:if>">
				<td><s:property value="#s.index"/></td>
				<td><s:property/></td>
				<td><s:property value="#s.even"/></td>
				<td><s:property value="#s.odd"/></td>
				<td><s:property value="#s.first"/></td>
				<td><s:property value="#s.last"/></td>
				<td><s:property value="#s.count"/></td>
			</tr>
		</s:iterator>	 	 
	 </table>
	 
	 
	  <br/>--------------------------------------------------------------<br/>
	 #、merge @和類似:用於將多個集合合併<br/>
	 <s:set name="merList1" value="{'111','222','333','444'}"></s:set>
	 <s:set name="merList2" value="{'aaa','bbb','ccc','ddd'}"></s:set>
	 <s:append var="newMerList">
	 	<s:param value="merList1"></s:param>
	 	<s:param value="merList2"></s:param>
	 </s:append>
	 <s:iterator value="#newMerList">
	 	<s:property/> | 
	 </s:iterator>
	  <br/>--------------------------------------------------------------<br/>
	 #、sort @用於排序<br/>
	 <s:bean var="myComparator" name="com.rao.comparator.MyComparator"></s:bean>
	 <s:sort comparator="#myComparator" source="{1,45,56,0,345,3}">
	 	<s:iterator>
	 		<s:property/>,
	 	</s:iterator>
	 </s:sort>
	  <br/>--------------------------------------------------------------<br/>
	 #、subset @用戶截取集合中的子集;   注:decider:可選屬性,指定由開發者自己決定是否選中該元素.  
	 <br/>
	 <s:set name="subList" value="{'@@@','***','&&&','###'}"></s:set>
	 <s:subset source="#subList" start="1" count="2">
	 	<s:iterator>
	 		<s:property/>,
	 	</s:iterator>
	 </s:subset>
	  <br/>--------------------------------------------------------------<br/>
       二、數據標籤<br/>
      <hr size="3" color="red">
	#、action @用於導入一個Action<br/>
	使用action標籤,可以允許在jsp頁面中直接調用Action,在調用Action時候,可以指定需要被調用的Action的name和namespace.如果指定了executeResult參數的屬性值爲true,該標籤會把Action的處理結果(視圖資源)包含到本頁面中. 使用action標籤指定屬性有:
	<br/>
	id: 可選屬性,作爲該Action的引用ID   <br/> 
   
	name:必選屬性,指定調用Action    <br/>
	   
	namespace:可選屬性,指定該標籤調用Action所屬namespace    <br/>
	   
	executeResult:可選屬性,指定是否將Action的處理結果包含到本頁面中.默認值爲false,不包含.    <br/>
	   
	ignoreContextParam:可選參數,指定該頁面的請求參數是否需要傳入調用的Action中,默認值是false,即傳入參數.<br/>
	
	s:param是以request方式的值的,而不是以參數傳值,所以request.getParameter("")會獲取不到值,通過request.getAttribute("")方式可以獲取<br/>

	<s:action name="tagsAction1" ignoreContextParams="true" executeResult="true" namespace="/com/rao">
		<s:param name="userName" value="'三毛'"></s:param>
	</s:action>
	
	  <br/>--------------------------------------------------------------<br/>
	#、bean @用於導入一個javaBean,相當於:jsp:useBean 標籤<br/>
	<s:bean name="com.rao.bean.UserBean" var="user">
		<s:param name="userId" value="1001"></s:param>
		<s:param name="userName" value="'張三'"></s:param>
	</s:bean>
	userId:<s:property value="#user.userId"/><br>
	userName:<s:property value="#user.userName"/>
	  <br/>--------------------------------------------------------------<br/>
	#、date @用於格式化日期<br/>
	<s:set name="dt" value="new java.util.Date()"></s:set>
	當期系統時間是:<s:date name="dt" format="yyyy-MM-dd HH:ss:mm"/>
	  <br/>--------------------------------------------------------------<br/>
	#、debug @用於調試程序,讓開發人員一目瞭然的知道當前請求、值棧、棧中的各項參數<br/>
	<s:debug/>
	  <br/>--------------------------------------------------------------<br/>
	#、i18n @用於訪問國際化資源文件的內容<br/>
				1.默認訪問全局範圍內的資源文件;
				<br>
				<s:text name="welcome">
					<s:param>三毛</s:param>
					<s:param>學習</s:param>
				</s:text>
		
				<hr>
				2.訪問包範圍內的資源文件;
				<br>
				<s:i18n name="com/rao/action/package">
					<s:text name="welcome">
						<s:param>三毛</s:param>
						<s:param>學習</s:param>
					</s:text>
				</s:i18n>
				<hr>
				3.訪問Action範圍內的資源文件;
				<br>
				<s:i18n name="com/rao/action/GlobalNativeAction">
					<s:text name="welcome">
						<s:param>三毛</s:param>
						<s:param>學習</s:param>
					</s:text>
				</s:i18n>
	  <br/>--------------------------------------------------------------<br/>
	#、include @用於導入一個jsp文件,等同於:jsp:include標籤<br/>
	<s:include value="success.jsp"></s:include>
	  <br/>--------------------------------------------------------------<br/>
	#、param @用於給指定參數設置值<br/>
	<s:bean name="com.rao.bean.UserBean" var="user">
		<s:param name="userId" value="1001"></s:param>
		<s:param name="userName" value="'張三'"></s:param>
	</s:bean>
	userId:<s:property value="#user.userId"/><br>
	userName:<s:property value="#user.userName"/>
	  <br/>--------------------------------------------------------------<br/>
	#、property @輸出結果,很像EL表達式,但是可以依託於OGNL錶帶是很強大<br/>
	同上
	  <br/>--------------------------------------------------------------<br/>
	#、push @該標籤可以把程序員在ActionContext中引用的對像壓入valuestack中,爲以後訪問對象提供了方便<br/>
	<s:push value="#request.user"><s:property value="userName"/></s:push>
	  <br/>--------------------------------------------------------------<br/>
	#、set @用戶聲明對象或屬性<br/>
	<s:set name="uName" value="#request.user.userName"></s:set>
	<s:property value="#uName"/>,你好啊!
	  <br/>--------------------------------------------------------------<br/>
	#、text @用戶獲取國際化資源文件的內容<br/>
	請參考 il8n標籤
	  <br/>--------------------------------------------------------------<br/>
	#、url @用於組拼一個請求路徑<br/>
	<s:url var="url1" action="MyAction" method="add">
		<s:param name="id" value="%{23}"></s:param>
		<s:param name="name" value="%{'tom'}"></s:param>
	</s:url>
	<s:property value="#url1"/>
	<br/>
	注意:<br/>   
        <s:set name="myurl" value="'http://www.baidu.com'"></s:set>   
        value以字符處理:   <s:url value="#myurl"></s:url><br>   
        value明確指定以ognl表達式處理:    <s:url value="%{#myurl}"></s:url>   
	
	  <br/>--------------------------------------------------------------<br/>
    
       三、UI標籤<br/>
    <hr size="3" color="red">
    <s:form>
    #、checkboxlist @複選框列表<br>
   		 1> .list 生成;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>   
        name:checkboxlist的名字<br>   
        list:checkboxlist要顯示的列表<br>   
        value:checkboxlist默認被選中的選項,checked=checked<br>   
        <s:checkboxlist theme="simple" name="checkbox1" list="{'上網','看書','爬山','游泳','唱歌'}" value="{'上網','看書'}" ></s:checkboxlist>   
        <br>   
       
        2> .Map 生成;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>   
        name:checkboxlist的名字<br>   
        list:checkboxlist要顯示的列表<br>   
        listKey:checkbox 的value的值<br>   
        listValue:checkbox 的lablel(顯示的值)<br>   
        value:checkboxlist默認被選中的選項,checked=checked<br>   
        <s:checkboxlist theme="simple" name="checkbox2" list="#{1:'上網',2:'看書',3:'爬山',4:'游泳',5:'唱歌'}" listKey="key" listValue="value" value="{1,2,5}" ></s:checkboxlist>   
  
         <br/>--------------------------------------------------------------<br/>
     #、combobox <br/>
    <s:combobox theme="simple" label="選擇你喜歡的顏色" name="colorNames"  headerValue="------請選擇------" headerKey="1"  list="{'紅','橙','黃','綠','青','藍','紫'}" /> 
	<br/>--------------------------------------------------------------<br/>
     #、radio @單選框<br/> 
    	 <%   
            Sex sex1 = new Sex(1,"男");    
            Sex sex2 = new Sex(2,"女");   
            List<Sex> list = new ArrayList<Sex>();    
            list.add(sex1);   
            list.add(sex2);   
            request.setAttribute("sexs",list);    
        %>   
                      這個與checkboxlist差不多;<br>   
        1>.如果集合爲javabean:<s:radio theme="simple" name="sex" list="#request.sexs" listKey="id" listValue="name"></s:radio><br>   
        2>.如果集合爲list:<s:radio theme="simple" name="sexList" list="{'男','女'}"></s:radio><br>   
        3>.如果集合爲map:<s:radio theme="simple" name="sexMap" list="#{1:'男',2:'女'}" listKey="key" listValue="value"></s:radio><br>   
        <hr>   
     <br/>--------------------------------------------------------------<br/>
     #、select @下拉列表框<br/>  
     	這個與s:checkboxlist差不多;<br>   
        1>.如果集合爲javabean:<s:select theme="simple" name="sex" list="#request.sexs" listKey="id" listValue="name"></s:select><br>   
        2>.如果集合爲list:<s:select theme="simple" name="sexList" list="{'男','女'}"></s:select><br>   
        3>.如果集合爲map:<s:select theme="simple" name="sexMap" list="#{1:'男',2:'女'}" listKey="key" listValue="value"></s:select><br>   
     
     <br/>--------------------------------------------------------------<br/>
     #、doubleselect @級聯菜單 <br/>
    <!--   可以用直接指定,當然也可以跟數據庫綁定的 -->
     <s:set name="proviList" value="{'江西省','湖北省'}"></s:set>
     <s:set name="jxList" value="{'南昌市','贛州市','九江市','上饒市','鷹潭市'}"></s:set>
     <s:set name="hbList" value="{'武漢市','恩施市','十堰市','荊州市','襄樊市'}"></s:set>
     <s:doubleselect theme="simple"  name="provi" doubleList="top=='江西省' ? #jxList : #hbList" list="#proviList" doubleName="city"></s:doubleselect>
     <br/>--------------------------------------------------------------<br/>
     #、optiontransferselect <br/>
     <s:optiontransferselect theme="simple" label="change" name="abc" doubleList="{'111','222','333','444'}" list="{'aaa','bbb','ccc','ddd'}" doubleName="number"></s:optiontransferselect>
     <br/>--------------------------------------------------------------<br/>
     #、updownselect @可上下選擇的select <br/>
     <s:updownselect label="selectCity" emptyOption="true" name="selectCity" list="#jxList" headerValue="-Please Select The City-" headerKey="-1"></s:updownselect>
	  <br/>--------------------------------------------------------------<br/>
	 #、sx:datetimepicker @日期選擇控件 <br/>
	 使用步驟:聲明:我這裏用的是strut 2.1.8.1,在struts2.0的版本中可能有所不同;<br/>
	 		  1.導入struts2-dojo-plugin-2.1.8.1.jar DoJo 插件包;<br/>
	 		  2. 導入標籤:<%--@ taglib prefix="sx" uri="/struts-dojo-tags"--%>;<br/>
	 		  3.在需要使用的頁面中的head標籤之間加上<%-- <sx:head parseContent="true"/> --%>;<br/>
	 <sx:datetimepicker label="birthday" name="bir" value="#dt"></sx:datetimepicker>
	  <br/>--------------------------------------------------------------<br/>
     #、sx:tabbedpanel @選項卡控件 <br/>
   	  聲明:這個標籤代碼轉至:http://blog.sina.com.cn/s/blog_6145ed810100ecud.html,版權歸作者所有;寫的挺好拿來大家共同學習。
     
      <!-- tabbedpanel標籤 -->
		<!-- 最簡單的選項卡,兩個選項卡加載都是本頁面 -->
		  <hr color="blue">
		  <b>最簡單的選項卡:</b>
		  <br>
		        <sx:tabbedpanel id="tab1" beforeSelectTabNotifyTopics="/beforeSelect">
		     <sx:div label="Tab 1" >
		         Local Tab 1
		     </sx:div>  
		     <sx:div label="Tab 2" >
		         Local Tab 2
		     </sx:div>  
		        </sx:tabbedpanel>
		
		
		<!-- 加載其他頁面的選項卡 -->
		  <hr color="blue">
		  <b>加載其他頁面的選項卡:</b>
		  <br>
		  <sx:tabbedpanel id="tab2">
		  <sx:div label="Remote Tab 1" href="upload.jsp">
		             Remote Tab 1
		        </sx:div>
		     <sx:div label="Remote Tab 2" href="multipleUpload.jsp" >
		             Remote Tab 1
		        </sx:div>
		  </sx:tabbedpanel>
		
		
		<!-- 設置選項卡底下的內容懶加載,即等需要的時候再加載,使用屬性preload="false"-->
		  <hr color="blue">
		  <b>設置選項卡底下的內容懶加載,即等需要的時候再加載,使用屬性preload="false":</b>
		  <br>
		        <sx:tabbedpanel id="tab3">
		     <sx:div label="Remote Tab 1" href="upload.jsp">
		         Remote Tab 1
		     </sx:div> 
		     <sx:div label="Remote Tab 2" href="multipleUpload.jsp" preload="false">
		         Remote Tab 1
		     </sx:div>     
		        </sx:tabbedpanel>
		
		
		<!-- 固定大小的選項卡 -->
		  <hr color="blue">
		  <b>固定大小的選項卡,使用屬性cssStyle和doLayout:</b>
		  <br>
		        <sx:tabbedpanel cssStyle="width: 200px; height: 100px;" doLayout="true" id="tab4">
		     <sx:div label="Tab 1" >
		         Local Tab 1
		     </sx:div>  
		     <sx:div label="Tab 2" >
		         Local Tab 2
		     </sx:div>  
		        </sx:tabbedpanel>
		
		
		<!-- 每次點擊選項卡時都重新刷新內容 -->
		  <hr color="blue">
		  <b>每次點擊選項卡時都重新刷新內容,使用屬性refreshOnShow:</b>
		  <br>
		  <sx:tabbedpanel id="tab5">
		     <sx:div label="Remote Tab 1" href="upload.jsp" refreshOnShow="true">
		         Remote Tab 1
		     </sx:div> 
		     <sx:div label="Remote Tab 2" href="multipleUpload.jsp" refreshOnShow="true">
		         Remote Tab 2
		     </sx:div>     
		  </sx:tabbedpanel>
		
		 
		
		<!-- 使得其中一個選項卡失效 -->
		  <hr color="blue">
		  <b>使得其中一個選項卡失效:</b>
		  <br>
		         <sx:tabbedpanel id="tab6">
		    <sx:div label="Tab 1" >
		        Local Tab 1
		    </sx:div>  
		    <sx:div label="Tab 2" disabled="true">
		        Local Tab 2
		    </sx:div>  
		        </sx:tabbedpanel>
		
		
		<!-- 設置選項卡在底部顯示 (可以是: top, right, bottom, left) -->
		  <hr color="blue">
		  <b>設置選項卡在底部顯示 (可以是: top, right, bottom, left):</b>
		  <br>
		  <sx:tabbedpanel id="tab7" labelposition="bottom" cssStyle="width:200px;height:100px;" doLayout="true">
		     <sx:div label="Tab 1" >
		         Local Tab 1
		     </sx:div>  
		     <sx:div label="Tab 2" >
		         Local Tab 2
		     </sx:div>  
		  </sx:tabbedpanel>
		
		<!-- 設置選項卡允許關閉,使用屬性closeable -->
		  <hr color="blue">
		  <b>設置選項卡允許關閉,使用屬性closeable:</b>
		  <br>       
		  <sx:tabbedpanel id="tab8">
		     <sx:div label="Tab 1" >
		         Local Tab 1
		     </sx:div>  
		     <sx:div label="Tab 2"  closable="true">
		         Local Tab 2
		     </sx:div>  
		  </sx:tabbedpanel>

 	 <br/>--------------------------------------------------------------<br/>
     #、sx:textarea @textarea控件 <br/>
     <sx:textarea label="簡介" value="sx:textareasx:textareasx:<br/>textareasx:textareasx:textareasx:<br/>textareasx:textareasx:<br/>textareasx:textarea"></sx:textarea>
     
     <br/>--------------------------------------------------------------<br/>
     #、sx:tree @樹控件 <br/>
     <sx:tree id="tree1" label="根節點">
	   <sx:treenode id="tn1" label="財務部" />
	   <sx:treenode id="tn2" label="開發部">
	       <sx:treenode id="tn3" label="JAVA" />
	       <sx:treenode id="tn4" label=".NET" />
	   </sx:treenode>
	   <sx:treenode id="tn5" label="人事部" />
	</sx:tree>
     
 </s:form>   
     
  </body>
</html>

 

 

struts.xml 代碼:

Xml代碼 複製代碼 收藏代碼
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "struts-2.1.7.dtd" >  
  3. <struts>  
  4.     <constant name="struts.custom.i18n.resources" value="struts2"></constant>  
  5.     <constant name="struts.configuration.xml.reload" value="true"></constant>  
  6.        
  7.     <package name="package1" namespace="/com/rao" extends="struts-default">  
  8.         <action name="tagsAction1" class="com.rao.action.TagsAction1">  
  9.             <result>/success.jsp</result>  
  10.                
  11.         </action>  
  12.     </package>  
  13. </struts>  

 

 TagsAction1.java 代碼:

Java代碼 複製代碼 收藏代碼
  1. package com.rao.action;   
  2.   
  3. import com.opensymphony.xwork2.ActionSupport;   
  4.   
  5. public class TagsAction1 extends ActionSupport {   
  6.     private String userName;   
  7.     public String getUserName() {   
  8.         return userName;   
  9.     }   
  10.     public void setUserName(String userName) {   
  11.         this.userName = userName;   
  12.     }   
  13.   
  14.     @Override  
  15.     public String execute() throws Exception {   
  16.            
  17.         return SUCCESS;   
  18.     }   
  19.   
  20. }  
package com.rao.action;

import com.opensymphony.xwork2.ActionSupport;

public class TagsAction1 extends ActionSupport {
	private String userName;
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}

	@Override
	public String execute() throws Exception {
		
		return SUCCESS;
	}

}

 

 

GlobalNativeAction.java

Java代碼 複製代碼 收藏代碼
  1. package com.rao.action;   
  2.   
  3. import com.opensymphony.xwork2.ActionContext;   
  4. import com.opensymphony.xwork2.ActionSupport;   
  5. /**  
  6.  * 演示的是在Action 中獲取國際化資源文件中的內容  
  7.  * @author Administrator  
  8.  *  
  9.  */  
  10. public class GlobalNativeAction extends ActionSupport {   
  11.   
  12.     @Override  
  13.     public String execute() throws Exception {   
  14.         //不帶有佔位符的獲取方法   
  15.         //ActionContext.getContext().put("message", this.getText("welcome"));   
  16.         //帶有佔位符的獲取方法   
  17.         ActionContext.getContext().put("message"this.getText("welcome",new String[]{"raozhiyong","study"}));   
  18.         return "message";   
  19.     }   
  20.   
  21. }  
package com.rao.action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
 * 演示的是在Action 中獲取國際化資源文件中的內容
 * @author Administrator
 *
 */
public class GlobalNativeAction extends ActionSupport {

	@Override
	public String execute() throws Exception {
		//不帶有佔位符的獲取方法
		//ActionContext.getContext().put("message", this.getText("welcome"));
		//帶有佔位符的獲取方法
		ActionContext.getContext().put("message", this.getText("welcome",new String[]{"raozhiyong","study"}));
		return "message";
	}

}

 

 

struts2_zh_CN.properties

 

welcome      全局範圍:{0},這是一箇中文的國際化資源文件,歡迎你的使用{1}!!!

 

GlobalNativeAction_zh_CN.properties

 

welcome      Action範圍:{0},這是一箇中文的國際化資源文件,歡迎你的使用{1}!!!

 

package_zh_CN.properties

 

welcome      package範圍:{0},這是一箇中文的國際化資源文件,歡迎你的使用{1}!!!

 

Sex.java

 

 

Java代碼 複製代碼 收藏代碼
  1. package com.rao.bean;   
  2.   
  3. public class Sex {   
  4.     private int id;   
  5.     private String name;   
  6.        
  7.     public Sex(int id, String name) {   
  8.         super();   
  9.         this.id = id;   
  10.         this.name = name;   
  11.     }   
  12.        
  13.     public int getId() {   
  14.         return id;   
  15.     }   
  16.     public void setId(int id) {   
  17.         this.id = id;   
  18.     }   
  19.     public String getName() {   
  20.         return name;   
  21.     }   
  22.     public void setName(String name) {   
  23.         this.name = name;   
  24.     }   
  25.   
  26. }  
package com.rao.bean;

public class Sex {
	private int id;
	private String name;
	
	public Sex(int id, String name) {
		super();
		this.id = id;
		this.name = name;
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

}

 

 

UserBean.java

 

Java代碼 複製代碼 收藏代碼
  1. package com.rao.bean;   
  2.   
  3. import java.io.Serializable;   
  4.   
  5. public class UserBean implements Serializable{   
  6.   
  7.     private static final long serialVersionUID = 1L;   
  8.     public UserBean() {}   
  9.        
  10.     private Integer userId;   
  11.     private String userName;   
  12.     public Integer getUserId() {   
  13.         return userId;   
  14.     }   
  15.     public void setUserId(Integer userId) {   
  16.         this.userId = userId;   
  17.     }   
  18.     public String getUserName() {   
  19.         return userName;   
  20.     }   
  21.     public void setUserName(String userName) {   
  22.         this.userName = userName;   
  23.     }   
  24.   
  25. }  
package com.rao.bean;

import java.io.Serializable;

public class UserBean implements Serializable{

	private static final long serialVersionUID = 1L;
	public UserBean() {}
	
	private Integer userId;
	private String userName;
	public Integer getUserId() {
		return userId;
	}
	public void setUserId(Integer userId) {
		this.userId = userId;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}

}

 

 

MyComparator.java

 

 

Java代碼 複製代碼 收藏代碼
  1. package com.rao.comparator;   
  2.   
  3. import java.util.Comparator;   
  4.   
  5. public class MyComparator implements Comparator<Integer> {   
  6.   
  7.     public int compare(Integer o1, Integer o2) {   
  8.         int c = o1.compareTo(o2);    
  9.         return c;//可以完成順序排序   
  10.         //return -c;//可以完成倒序排序   
  11.     }   
  12. }  
package com.rao.comparator;

import java.util.Comparator;

public class MyComparator implements Comparator<Integer> {

	public int compare(Integer o1, Integer o2) {
		int c = o1.compareTo(o2); 
		return c;//可以完成順序排序
		//return -c;//可以完成倒序排序
	}
}

 

 運行結果,附上圖片:

 



 

 

 

 

 

 

 

 

 

 

 

 代碼見附件壓縮包:Struts2-Tags.zip。謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章