Struts2的标簽主要分為兩大類:即UI标簽(UI Tag)和通用标簽(Generic Tag);
在标簽使用之前需要導入标簽庫:
<% @ taglib prefix="s" uri="/struts-tags"%>
一、UI标簽分為3類:表單标簽、非表單标簽、AJAX标簽:
1、表單标簽:
<s:form></s:form>:擷取相應的from值
<s:textfield></s:textfield>:文本輸入框
<s:password></s:password>:密碼輸入框
<s:textarea></s:textarea>:文本域輸入框
<s:radio list=""></s:radio>:單選按鈕
<s:checkbox></s:checkbox>:複選框
<s:submit></s:submit>:送出标簽
<s:reset></s:reset>:重置标簽
<s:hidden></s:hidden>:隐藏域标簽
這些标簽基本上和HTML裡的标簽是一緻的,用法也差不多,這裡就不做詳細的介紹了。
2、非表單标簽
1、非表單标簽主要用于在頁面生成一些非表單的可視化元素,例如Tab頁面,輸出HTML頁面的樹形結構等。當然,非表單标簽也包含在頁面顯示Action裡封裝的資訊, 非表單标簽主要有如下幾個:
a:生成一個超級連接配接(link)。
actionerror:如果Action執行個體的getActionError()方法傳回不為null,則該标簽負責輸出該方法傳回的系列錯誤。
actionmessage:如果Action執行個體的getActionMessage()方法傳回不為null,則該标簽負責輸出該方法傳回的系列消息。
component:使用此标簽可以生成一個自定義元件。
div:此标簽負責生成一個div片段。
fielderror:如果Action執行個體存在表單域的類型轉換錯誤、校驗錯誤、該标簽負責輸出這些提示資訊。
tabbedPanel:生成HTML頁面的Tab頁。
tree:生成一個樹形結構。
treenode:生成樹形結構的節點。
2、非表單标簽的常用标簽:
(1).actionerror和actionmessage标簽:這兩個标簽用法完全一樣,作用也幾乎完全一樣,都是負責輸出Action執行個體裡封裝的資訊,差別是actionerror标簽負責輸出Action執行個體的getActionError()方法的傳回值,而actionmessage标簽負責輸出Action執行個體的getActionMessage()方法的傳回值。這兩個标簽沒有其專有的屬性,是以使用起來挺簡單的。
(2).component标簽:此标簽用于使用自己的自定義元件,這是一個非常靈活的用法,如果經常需要使用某個效果片段,就可以考慮将這個效果片段定義成一個自定義元件,然後在頁面中使用component标簽來使用該自定義元件。
因為使用自定義元件還是基于主題,模闆管理的,是以在使用component标簽時,常常需要指定如下三個屬性:
~ theme:自定義元件所使用的主題,如果不指定該屬性,預設使用xhtml主題。
~ templateDir:指定自定義元件的主題目錄。如果不指定,預設使用系統的主題目錄,即template目錄。
~ template:指定自定義元件所使用的模闆。
注:除此之外,還可以在cmponent标簽内使用param子标簽,子标簽表示向該标簽模闆中傳入額外的參數。如果希望在模闆中取得該參數,總是采用如下形式:$parameters.paramname,或者$parameters['paramname']。
提示:自定義的模闆檔案可以采用FreeMarker、JSP和Velocity三種技術來書寫。
3、AJAX标簽
【1】div标簽:
為了讓div标簽能夠擷取伺服器資料,必須為該标簽指定一個href屬性,href屬性必須是一個Action。
為了指定更新頻率和更新延遲:可以指定如下2個屬性:
(1)updateFreq : 指定更新Div内容的試卷間隔,機關是ms.如果不指定該屬性,則隻加載時更新
該div的内容。
(2) delay :指定更新div内容的時間延遲,機關是ms。如果不指定,則加載時立即開始記時,
準備開始重新整理div的内容。若果沒有指定updateFreq屬性,則該屬性毫無意義;
(3)如果伺服器更新的内容包含了javascript代碼,則需要指定指定伺服器javascript代碼的方法
executeScripts="true";
(4) showErrorTransportText :設定是否顯示伺服器的錯誤資訊
(5) loadingText :設定當伺服器響應還未加載時的顯示資訊;
(6)handler :指定的javascript函數
<s:url id="test" value="/Test.action" />
<s:div id="div1" theme="ajax" href="%{test}" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" updateFreq="1000" />
注意:Struts 2要求所有的Ajax标簽指定href屬性時,都應該指向一個由url标簽生成的變量,
而不是直接給出Action名; 一旦有handler屬性和href,那麼href就會失效,隻執行handler;
【2】标簽 a:
<s:a id="link1" theme="ajax" href="%{test}" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow"
executeScripts="true" targets="div2"
formId="form" />
【3】标簽submit
<s:submit type="submit" id="ajaxsubmit" theme="ajax" href="%{test}" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow"
executeScripts="true" targets="div2"
formId="form" />
【4】标簽 autocompleter: 與google搜尋框類似的下拉選擇搜尋清單
<s:autocompleter theme="ajax" herf="%{books} forceValidOption="true"" />
【5】标簽tabbedPanel:頁籤
<b>固定大小的頁籤,使用屬性cssStyle和doLayout:</b>
<s:tabbedpanel cssStyle="width: 200px; height: 100px;" doLayout="true" id="tab4">
<s:div label="Tab 1" >
Local Tab 1
</s:div>
<s:div label="Tab 2" >
Local Tab 2
</s:div>
</s:tabbedpanel>
注:如果還想了解其他标簽就去看本博的“struts2的标簽之通用标簽”。