Struts2標籤庫分五大類

摘要:Struts2標籤庫分五大類

struts2的標籤可以分為五大類:

一、邏輯控制標籤

(1)條件標籤

條件標籤主要有<s:if><s:elseif><s:esle>3個子標籤,用於執行基本的條件流轉

 

<s:if test="#request.username=='admin'">    您是admin!  </s:if> <s:elseif test="#request.username=='manager'">    您是manager! </s:elseif> <s:else>    您沒有身份! </s:else>

test:條件判定語句,值為boolean類型。

 

(2)迭代標籤

<s:iterator>標籤用於遍歷集合(java.util.Collection)或者枚舉值(java.util.Iterator)類型的對象。

1、遍歷普通List、數組

 

    //後台存放數據到list中     List<String > list = newArrayList<String>();     list.add("aaa");list.add("bbb"); list.add("ccc");      <!-- 用iterator標籤遍歷list -- >     <s:iterator value="list"var="v">         <s:property value="v"/><br>     </s:iterator>      或者:     <s:iteratorvalue="list">          <s:property/><br>      </s:iterator>

 

2、遍歷對象List、數組
<s:iterator value="users" id="us">    <!--可以這樣: <s:property value="#us.name"/>  -->     <s:property value="name"/>     <s:property value="email"/><br/> </s:iterator> 
3、 status屬性的應用
<s:iterator value="users" id="us" status="u">     序列號: <s:property value="#u.index"/>      姓名:  <s:property value="name"/>      郵件:  <s:property value="email"/>            是否第一條:  <s:property value="#u.first"/>      是否最後一條:<s:property value="#u.last"/>      是否偶數行:  <s:property value="#u.even"/>      是否奇數行:  <s:property value="#u.odd"/>      當前行數:    <s:property value="#u.count"/> </s:iterator> 
id:指定集合中元素在值棧中的名稱。
value:指定迭代的迭代體。
var:指向值棧中的值。
status:該屬性在迭代時會產生一個IteratorStatus對象,該對象可以判斷當前元素的位置。

二、數據輸出標籤

(1)action標籤

<s:action>標籤用於在jsp頁面中直接調用Action

<s:action name="loginAction"  namespace="/user" ignoreContextParam="false"  executeResult="true" >     <s:param name="userName" value="'張三'"></s:param>   </s:action>

name:struts.xml中指定Action的名稱

executeResult:指定是否將Action的處理結果包含到本頁面中.默認值為false(即不包含)

ignoreContextParam:指定該頁面的請求參數是否需要傳入調用的Action中,默認值是false(即傳入參數)  

注意:<s:param>是以request方式的值的,而不是以參數傳值,所以request.getParameter("")會獲取不到值,通過request.getAttribute("")方式可以獲取到。 

(2)date標籤

<s:date>標籤用以格式化日期並顯示

 

<s:date name="user.birth" format="yyyy-MM-dd HH:ss:mm"nice="false"/> 

 

name:表示要輸出的日期對象。

format:輸出的日期格式。

nice:指定是否輸出指定日期與當前時刻之間的時差。若nice="true",則format屬性失效,只輸出當前時刻與指定日期間的間隔;若nice=「false」,則是輸出指定日期。

(3)bean標籤

bean標籤用於創建javaBean實例,需要java類提供相應的getter、setter方法

<s:bean name="pojo.User" id = "user">        <s:param name="name" value=" '張三' "></s:param>        <s:param name="email" value=" '48964565@qq.com' "></s:param>        <s:param name="age" value="20"/>        <s:param name="birth" value="'2010-4-1'"/>  </s:bean>  <s:property value="#user.name"/> <s:property value="#user.email"/> <s:property value="#user.age"/> <s:date name="#user.birth" format="yyyy-MM-dd" nice="false"/>

name: 必填,指定要實例化的JavaBean的實現類

id: 可選。如指定了該屬性,則該Javabean實例會被放入StackContext中(不是ValueStack),從而允許直接通過該id屬性來訪問該JavaBean實例。如果未指定,則該Javabean實例會被放入ValueStack中,該標籤結束,生成的子集被移出valuestack棧。

注意:java類String類型的屬性賦值時,必須再加個單引號' '。

(4)parma標籤

param標籤用於為其他標籤添加參數,用法如下:

 

   <!--  第一種用法 -->    <s:param name="參數名" value="參數值"/>    <!-- 第二種用法 -->    <s:param name="參數名">參數值</s:param>

 

注意:字元串賦值時要加單引號。詳見bean標籤用法。

(5)property標籤

property標籤用於輸出一個屬性值。

 

 <s:property value="user.name" escape="false" default="默認值" />

 

value:指定屬性的名稱,默認值是棧頂元素。

escape:指定輸出的內容是否要經過HTML轉義,默認值是true。escape="false"表示會將類似"<h2>aaa</h2>"的字元串轉義成html顯示。

default:指定默認值。

(6)<s:url>標籤<s:a>標籤

<s:url>標籤通常與<s:a>標籤一起使用,<s:url>標籤主要用於賦值給href屬性,用於指定鏈接的地址和傳遞的參數。

<!-- 指定鏈接的action 及 傳遞的參數 --> <s:url action="getUserList" namespace="test2" id="getUserListUrl" method="execute">      <s:param name="id" value="1"></s:param>       <s:param name="page" value="1"></s:param> </s:url>  <!-- 鏈接地址引用了<s:url>的值 --> <s:a href="%{getUserListUrl}" >獲取用戶列表</s:a>

其結果等同於<a href="/test2/getUserList ! execute ?id = 1 & page = 1"></a>

(7)<s:debug>標籤

<s:debug>標籤用於在頁面上生成一個連接,當點擊鏈接時,可以看到ValueStack 和 Stack Context中的內容

三、HTML表單標籤

(1)表單標籤

 <s:form action=" " method="post" enctype="multipart/form-data" namespace="/test1">         <s:textfield  label="姓名" name="username"  tooltip="Enter your Name here"  />        <s:password label="密碼"  name="password" />        <s:textarea  label="備註" name="remark" cols="20" rows="3" tooltip="Enter your remark"/>        <s:hidden name="topic.ic" value="<s:property value='topic.id'/>"></s:hidden>   //注意<s:property>標籤的value值是單引號。        <s:submit   value="提交"/>        <s:reset  value="重置" /> </s:form>

enctype:共有3個值:

1)application/x-www-form-urlencoded:默認值,使用範圍廣,但向伺服器發送大量文本、包含非ASCII字元的文本或二進位數據時該編碼效率很低。

2)multipart/form-data:上傳二進位數據,使用該值即可完整的傳遞文本文件數據。

3)text/plain:主要使用於發送電子郵件的應用。

namespace:設置action的包命名空間。

注意:當該標籤設置了namespace屬性后,action屬性設置不能加.action後綴。

(2)<s:select>標籤

<!-- 數據前台設置 --> <s:select  label="性別"  name="gender" list="#{1:'男',2:'女'}"  listKey="key" listValue="value" value="#{2:'女'}" emptyOption="true" headerKey="-1"  headerValue="--請選擇性別--"  tooltip="Choose your gender" />   <!-- 數據後台獲取 --> List<User> user;  //後台添加數據到list中 <s:select  label="用戶"  name="gender" list="user"  listKey="userId" listValue="name"  emptyOption="true" headerKey="-1"  headerValue="--請選擇用戶--"  tooltip="Choose your gender" /> 

list屬性(必設)必須是一個可以迭代的源,如為一個List, Map, Set等

1)如果集合為javabean:<s:select theme="simple" name="sex" list="#request.sexs" listKey="id" listValue="name"></s:select>

2)如果集合為list:<s:select theme="simple" name="sexList" list="{'男','女'}"></s:select>

3)如果集合為map:<s:select theme="simple" name="sexMap" list="#{1:'男',2:'女'}" listKey="key" listValue="value"></s:select>

listKey:設置後台傳送的數據項。

listValue:設置前台顯示的數據項。

emptyOption:設置是否有空選項。

value:設置默認顯示數據列表list中的選項。

headerValue:設置下拉框頭條顯示數據。

headerKey:設置下拉框頭條後台傳回的數據。

(3)<s:combobox>標籤

 

<s:combobox theme="simple" label="選擇你喜歡的顏色" name="colorNames"  headerValue="------請選擇------" headerKey="1"  list="{'紅','橙','黃','綠','青','藍','紫'}" />    

 

屬性說明詳見<s:select>標籤。

(4)<s:checkboxlist>標籤

 

<s:checkboxlist name="hobby" label="興趣"  list="#{1:'football', 2:'music',3:'basketball', 4:'computer'}" listKey="key" listValue="value" tooltip="Choose your hobby"/>

 

屬性說明詳見<s:select>標籤。

(5)<s:checkbox>標籤

 

<s:checkbox name="age" label="年齡" value="18"  fieldValue="yes" tooltip="Confirmed that your are Over 18"/>

 

fieldVaule:設置選中時向後台傳送的數據(默認不設時返回的是布爾類型)。

value:設置前台顯示的數據。

(6)<s:radio>標籤

 

<s:radio list="#{1:'男',2:'女'}" name="gender" label="性別" required="true" value="1"></s:radio>

 

value:默認選中的選項的key值。

(7)<s:file>標籤

 

<s:file label="上傳" theme="simple" name="uploadfile"/>

 

(8)<s:hidden>標籤

 

<s:hidden name="uid"/>

 

四、HTML非表單標籤

(1)<s:actionerror>標籤

actionerror標籤用於輸出存儲在ActionError中的值。

<s:actionerror/>

Action類中添加actionerror信息:addActionError("出錯了!");

(2)<s:actionmessage>標籤

actionmessage標籤用於輸出存儲在ActionMessage中的值。

<s:actionmessage/>

Action類中添加actionmessage信息:addActionMessage("出錯了!");

(3)<s:fielderror>標籤

fielderror標籤用於輸出FieldError中的值。默認錯誤信息顯示在所對應field標籤的上方。

<s:textfield name="user.name" label="姓名" />

Action類中添加fielderror信息:addFieldError("user.name", "用戶名不能為空!");

注意:(1) actionerror與actionmessage功能差不多,不過在<head></head>中加上<s:head/>標籤后,actionerror和fielderror的錯誤信息有CSS效果(變紅),而actionmessage無效果。

         (2) 在添加錯誤信息前最好先clearErrorsAndMessages();來清空之前載入的錯誤信息。

五、AJAX標籤

<%@taglib prefix="sx" uri="/struts-dojo-tags" %>

記得在<head></head>中加上<sx:head/>標籤,<sx:head/>標籤 用來下載Dojo文件和相應的Javascript代碼

(1)<sx:div>標籤

<sx:div>標籤可以非同步定時載入刷新數據。

 

<!-- 用於顯示非同步載入的數據 --> <div id="msg">       <s:property value="message"/> </div> <!-- 定時5s載入test2.action中的message屬性值,並刷新id=「msg」的div標籤--> <sx:div updateFreq="5000" href="test2/test2.action" delay="100" errorText="出錯了!" loadingText="正在請求..." showLoadingText="true" indicator="msg"> </sx:div>  

href:非同步請求的資源地址。

updateFreq:自動更新div內容的間隔,以毫秒為單位。

autoStart:頁面載入后是否啟動定時器,默認為true。

delay:第一個非同步請求開始之前等待的時間,以毫秒為單位。

loadText:當請求正在處理時顯示的文本。

showLoadingText:是否顯示loadText值,默認為false。

errorText:當請求失敗時顯示的文本。

indicator:當請求正在處理時具有這個id的元素將被顯示。

executeScript:執行伺服器返回內容中的javascript代碼,默認為false。

formId:指定表單id,表單欄位將被序列化並作為參數傳遞。

(2)<sx:a>標籤

<!-- 單擊"用戶信息列表信息" 鏈接後會載入userList.jsp表到userListDiv標籤上,其中getUserList.action是跳轉到userList.jsp頁面的 --> <sx:a href="test2/getUserList.action"  targets="userListDiv" loadingText="載入中..." showLoadingText="true" errorText="載入失敗!">用戶信息列表</sx:a> <div id="userListDiv"></div>  <!-- userList.jsp --> <body>   <table border="1" cellpadding="0" cellspacing="0">     <thead>         <tr>             <th colspan="4">用戶信息列表</th>         </tr>     </thead>     <tbody>         <tr>             <th>序列號</th>             <th>用戶名</th>         </tr>         <s:iterator value="users" id="us" status="u">         <tr>             <td><s:property value="#u.index"/></td>             <td><s:property value="name"/></td>         </tr>         </s:iterator>     </tbody>      </table> </body>

href:非同步請求的資源地址。

targets:被更新的元素列表。

loadText:當請求正在處理時顯示的文本。

showLoadingText:是否顯示loadText值,默認為false。

errorText:當請求失敗時顯示的文本。

indicator:當請求正在處理時具有這個id的元素將被顯示。

executeScript:執行伺服器返回內容中的javascript代碼,默認為false。

formId:指定表單id,表單欄位將被序列化並作為參數傳遞。

(3)<sx:submit>標籤

<sx:submit>標籤的使用和<sx:a>標籤的使用一樣,這裡就不舉例了。

(4)<sx:datetimepicker>標籤

 

<sx:datetimepicker name="book.publicationDate" value="today" label="出版日期" displayFormat="yyyy-MM-dd" ></sx:datetimepicker>

 

(5)<sx:textarea>標籤

 

<sx:textarea name="user.remark"  label="備註"  rows="20" cols="50"></sx:textarea>

 

提示:<sx:textarea>標籤提交的文本是帶Html標籤的。

(6)<sx:tree>標籤

<sx:tree label="城市" id="city" showRootGrid="false" showGrid="false" treeSelectedTopic="treeSelected">            <sx:treenode label="北京" id="bj">                  <sx:treenode label="朝陽" id="cy"></sx:treenode>                  <sx:treenode label="中關村" id="zgc"></sx:treenode>            </sx:treenode>       <sx:treenode label="天津" id="tj">            <sx:treenode label="白洋淀" id="byd"></sx:treenode>            </sx:treenode> </sx:tree>      <script language="JavaScript" type="text/javascript">      dojo.event.topic.subscribe("treeSelected", function treeNodeSelected(node) {          alert(node.node.widgetId + node.node.title);      }); </script>

showRootGrid:是否顯示根節點,默認為true。

showGrid:是否顯示結點間的連接線,默認為true。

treeSelectedTopic:選中時的時間。

(7)<sx:tabbedpanel>標籤

 

 <sx:tabbedpanel id="tab1" cssStyle="width:300px;" labelposition="top" selectedTab="tab2">             <sx:div  id="tab1" label="Tab 1" cssStyle="height:100px;" href="index.jsp" closable="true" preload="false" >           Local Tab 1            </sx:div>               <sx:div id="tab2"  label="Tab 2" cssStyle="height:100px;" href ="index.jsp"  refreshOnShow="true">                 Local Tab 2            </sx:div>               <sx:div id="tab3"  label="Tab 3" disabled="true">                 Local Tab 3            </sx:div>  </sx:tabbedpanel>  

 

closable:設置該tab標籤是否可關閉。

href:載入資源。若為jsp頁面,則載入該頁面到該tab中。

preload:設置是否預先載入,默認為true。

cssStyle:用於設置tab選項卡大小。

refreshOnShow:設置是否每次單擊選項卡重新載入內容,默認為false。

disabled:設置選項卡是否失效,默認為false。

labelposition:設置選項卡標頭的顯示位置,可以是top, right, bottom, left。

selectedTab:設置默認選中的選項卡。Struts2標籤庫.zip

 

 

========================================================================

表单标签的通用属性

对于Struts2的表单标签,大都是动态来生成HTML代码的,因此有很多的属性都是通用的,也就是大多表单标签都有的一些属性,下面一起来看一下。

1:name属性和value属性

       表单标签的name属性和value属性基本等同于HTML组件的name和value,但是也有一些不一样的地方:表单标签在生成HTML的时候,如果标签没有设置value属性的话,就会从值栈中按照name获取相应的值,把这个值设置成生成的HTML组件的value。

       简单点说表单标签的value在生成HTML的时候会自动设置值,值从值栈中获取。

2:其他通用属性

除了name属性和value属性之外,多数Struts2的表单标签还有几组通用属性:

  • 与css相关的属性:

l         cssClass:指定生成的HTML组件的class属性。

l         cssStyle:指定生成的HTML组件的style属性,使用内联的css属性。

l         cssErrorClass:指定验证失败时引用的css属性。

l         cssErrorStyle:指定验证失败时引用的内联css属性。

  • 与触发事件相关的属性:

l         onblur:指定生成的HTML组件失去焦点时触发的事件。

l         onchange:指定生成的HTML组件内容改变时触发的事件。

l         onclick:指定生成的HTML组件被单击时触发的事件。

l         ondbclick:指定生成的HTML组件被双击时触发的事件。

l         onfocus:指定生成的HTML组件获得焦点时触发的事件。

l         onkeydown:指定在生成的HTML组件中按下键盘时触发的事件。

l         onkeypress:指定在生成的HTML组件中按下并释放键盘时触发的事件。

l         onkeyup:指定在生成的HTML组件中释放键盘时触发的事件。

l         onmousedown:指定在生成的HTML组件中按下鼠标时触发的事件。

l         onmousemove:指定在生成的HTML组件中鼠标移动时触发的事件。

l         onmouseout:指定鼠标移动出生成的HTML组件时触发的事件。

l         onmouseover:指定鼠标移动入生成的HTML组件时触发的事件。

l         onmouseup:指定释放鼠标按键时触发的事件。

l         onselect:指定生成的HTML组件中选中区域改变时触发的事件。

  • 与悬浮提示相关的属性:

l         jsTooltipEnabled:是否允许用javascript来生成悬浮提示。

l         tootip:悬浮提示的内容。

l         tooltipDelay:悬浮提示出现的延迟时间,以毫秒为单位。

l         tooltipIcon:悬浮提示使用的图标的URL路径。

  • 其他来源于html的属性:

l         accesskey:指定快捷键,如果设置这个属性为x,按Alt+x就可以快速定位到这个生成的HTML组件。

l         disabled:生成的HTML组件是否可用。

l         id:指定生成的HTML组件的id。

l         tabindex:指定生成的HTML组件的tab顺序的索引。

l         title:指定生成的HTML组件的标题信息。

  • 与提示文本相关的属性:

l         label:用来显示在HTML组件前的文本。

l         key:同label一样,也是用来显示在HTML组件前的文本,但是其内容取自国际化信息。

l         labelposition:标签文本显示的位置,可以选择top或left。

  • 与模板和主题相关的属性:

l         template:指定使用的模板。

l         templateDir:指定使用的模板所在的目录。

l         theme:指定使用的主题。

  • 与是否为必填项相关的属性。

l         required:指定此生成的HTML组件是否为必填项。

l         requiredposition:指定此生成的HTML组件是必填项时提示信息显示的位置,可以选择left或right。

 

 

=================================================================================================================================

表单标签的通用属性

对于Struts2的表单标签,大都是动态来生成HTML代码的,因此有很多的属性都是通用的,也就是大多表单标签都有的一些属性,下面一起来看一下。

1:name属性和value属性

       表单标签的name属性和value属性基本等同于HTML组件的name和value,但是也有一些不一样的地方:表单标签在生成HTML的时候,如果标签没有设置value属性的话,就会从值栈中按照name获取相应的值,把这个值设置成生成的HTML组件的value。

       简单点说表单标签的value在生成HTML的时候会自动设置值,值从值栈中获取。

2:其他通用属性

除了name属性和value属性之外,多数Struts2的表单标签还有几组通用属性:

  • 与css相关的属性:

l         cssClass:指定生成的HTML组件的class属性。

l         cssStyle:指定生成的HTML组件的style属性,使用内联的css属性。

l         cssErrorClass:指定验证失败时引用的css属性。

l         cssErrorStyle:指定验证失败时引用的内联css属性。

  • 与触发事件相关的属性:

l         onblur:指定生成的HTML组件失去焦点时触发的事件。

l         onchange:指定生成的HTML组件内容改变时触发的事件。

l         onclick:指定生成的HTML组件被单击时触发的事件。

l         ondbclick:指定生成的HTML组件被双击时触发的事件。

l         onfocus:指定生成的HTML组件获得焦点时触发的事件。

l         onkeydown:指定在生成的HTML组件中按下键盘时触发的事件。

l         onkeypress:指定在生成的HTML组件中按下并释放键盘时触发的事件。

l         onkeyup:指定在生成的HTML组件中释放键盘时触发的事件。

l         onmousedown:指定在生成的HTML组件中按下鼠标时触发的事件。

l         onmousemove:指定在生成的HTML组件中鼠标移动时触发的事件。

l         onmouseout:指定鼠标移动出生成的HTML组件时触发的事件。

l         onmouseover:指定鼠标移动入生成的HTML组件时触发的事件。

l         onmouseup:指定释放鼠标按键时触发的事件。

l         onselect:指定生成的HTML组件中选中区域改变时触发的事件。

  • 与悬浮提示相关的属性:

l         jsTooltipEnabled:是否允许用javascript来生成悬浮提示。

l         tootip:悬浮提示的内容。

l         tooltipDelay:悬浮提示出现的延迟时间,以毫秒为单位。

l         tooltipIcon:悬浮提示使用的图标的URL路径。

  • 其他来源于html的属性:

l         accesskey:指定快捷键,如果设置这个属性为x,按Alt+x就可以快速定位到这个生成的HTML组件。

l         disabled:生成的HTML组件是否可用。

l         id:指定生成的HTML组件的id。

l         tabindex:指定生成的HTML组件的tab顺序的索引。

l         title:指定生成的HTML组件的标题信息。

  • 与提示文本相关的属性:

l         label:用来显示在HTML组件前的文本。

l         key:同label一样,也是用来显示在HTML组件前的文本,但是其内容取自国际化信息。

l         labelposition:标签文本显示的位置,可以选择top或left。

  • 与模板和主题相关的属性:

l         template:指定使用的模板。

l         templateDir:指定使用的模板所在的目录。

l         theme:指定使用的主题。

  • 与是否为必填项相关的属性。

l         required:指定此生成的HTML组件是否为必填项。

l         requiredposition:指定此生成的HTML组件是必填项时提示信息显示的位置,可以选择left或right。

 

url:

http://www.360doc.com/content/08/0926/21/61497_1681080.shtml

 

 

url:http://www.010cnc.net/subject/about/Struts2%E6%A8%99%E7%B1%A4%E5%BA%AB%E6%94%B6%E6%8B%BE%E3%80%90%E5%AE%8C%E6%95%B4%E3%80%91.html

 

 

url:

http://sishuok.com/forum/blogPost/list/4080.html