天天看點

Struts2的标簽之UI标簽

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的标簽之通用标簽”。

繼續閱讀