1. 程式人生 > >Struts2學習(五)———— s標籤和國際化

Struts2學習(五)———— s標籤和國際化

一、s標籤

    在struts-2.3.15.1/docs/WW/docs/tag-reference.html下,就有著struts2所有標籤的參考文獻,只能看看其中比較常用的標籤。其他的以後遇到了在看參考文獻即可。

    通用標籤,control Tags 和 DataTags,下面用方框圈起來的就是我們需要了解的

            

        1.1、if、elseif、else 標籤。

          這個很簡單,流程控制的標籤,跟我們平常寫的if語句基本上類似。test用來編寫條件的

          

 

        1.2、Iterator

           迭代器標籤,用來迴圈迭代集合或陣列中的資料。還可以當for迴圈一樣去使用,非常常用,看看如何使用

           迭代list集合。

                  

           控制迴圈次數

                 

           獲取迭代時的一些狀態資訊

               

 

        1.3、a和url標籤

            s:url標籤:通常用來生成action路徑,域<c:url>標籤很類似

                 

            s:a標籤

                

 

        1.4、<s:property/>標籤

                在前面也使用過了,用來執行ognl表示式,最為常用的方式是使用它在頁面上輸出ValueStack或ActionContext中的資料。

        1.5、<s:set/>標籤

                建立一個變數,並將其儲存到指定的範圍內。

                

                <s:set var=”myVar” value=”#parameters.score[0]” scope=”page”/>,建立一個變數,儲存到page範圍,key為myVar,值為“#parameters.score[0]”的運算結果

                注意:scope有一個action範圍,並且他也是scope的預設值,它表示儲存到request和OgnlContext兩個範圍中,即比request範圍多了一個OgnlContext範圍。

 

        1.6、<s:push/>標籤

                <s:push>標籤是把指定值暫時壓入到值棧中,當執行完<s:push>標籤後,壓入到值棧中的值會被彈出

        1.7、<s:debug/>標籤

                Debug標籤用於除錯,它在頁面中生成一個“[Debug]”超連結,單擊這個超連結,可以檢視ValueStack和ActionContext中儲存的所有物件

 

     表單標籤

        Struts2的表單標籤還是比較好用的,但它也存在一些敗筆,例如主題這一部分就不是很靈活。所以導致開發中沒有公司會使用它提供的主題  

        Struts2標籤的優勢:

          l  簡化程式碼;一般般啦

          l  自動資料回顯;這個很不錯。

          |  指定主題樣式(說是優點,但很多人也會認為這是缺點)

        

        

 

      標籤樣式修改

         三個地方可以修改

         1、在<s:textfield>的theme屬性指定為simple,那麼這個表單項就使用簡單主題

         2、 在<s:form>的theme屬性指定為simple,那麼整個表單都使用簡單主題;

         3、設定struts.ui.theme常量為simple,那麼所有表單標籤的預設主題都是simple (常用這個)

   

 

二、struts2的國際化

        國際化的使用範圍,

          全域性國際化檔案,整個程式都可以使用(常用)

          特定包中可以使用(一個包中所有Action可以使用)

          特定Action可以使用(一個Action可以使用)

          臨時資訊檔案(JSP中i18n標籤中可以使用)

        JSP頁面獲取國際化資源

          使用<s:text/>標籤, <s:text name="key" />

        action中獲取國際化資源

          this.getText("key");

        配置檔案中獲取國際化資源

          key(直接使用國際化配置檔案中的key值即可獲得)

        2.1、全域性國際化檔案

           1、配置三個配置檔案

                格式:基本名稱_語言_國家.properties 

                res_zh_CN.properties  res_en_US.properties  res.properties  

                  res可以隨便取值的,比如下面我使用的i18n

                  res_zh_CN.properties:代表其中放的是中文

                  res_en_US.properties: 英文

                  res.properties:根據瀏覽器設定的什麼語言,就顯示那種語言。只提供中文和英文兩種選擇。

                內容:  

                        

            2、struts.xml中申明國際化資原始檔的位置以及作用範圍

                   

                  value:標識資原始檔的位置在哪裡,如果在src下,那麼就直接寫國際化資原始檔的基本名稱,如果在別的包下,那麼就需要將完整包名寫出來

            3、使用國際化資原始檔

                在jsp、action、資原始檔中使用國際化資原始檔有不同的格式,看上面即可。

 

        2.2、特定包中可以使用(一個包中所有Action可以使用)

             只需要將國際化資原始檔的名稱和位置固定,不需要在struts.xml中指定,注意,在特定包

                比如只想在com.wuhao.internationa包下使用,

                位置:com.wuhao.internationa包下建立package_zh_CN.properties檔案

                名稱:com.wuhao.internationa.package_zh_CN.properties  

                注意:這個檔案也可以在com.wuhao.internationa包的子包中被使用

                    

 

 

        2.3、特定Action可以使用(一個Action可以使用)

           很簡單,只需要將國際化資原始檔的名稱和位置固定,不需要在struts.xml中指定,

            名稱:Action名_語言_國家.properties  比如:InternationAction_zh_CN.properties

            位置:與該action同包下

                

 

        2.4、臨時資訊檔案(JSP中i18n標籤中可以使用)

            也就是隻能通過i18n標籤來拿到國際化資原始檔中的屬性

            名稱:基本名稱_語言_國家.properties  

                例如:res_zh_CN.properties

            位置:隨便放哪

            使用:

                  兩個name的意思分別為 國際化資原始檔所放位置 和 資原始檔中的欄位屬性名。

               <s:i18n name="com.wuhao.internation.res">

                  <s:text name="username"/>

               </s:i18n> 

 

三、總結

      非常簡單,掌握標籤的使用,和知道標籤優點即可。自動回顯功能。自動佈局,但是需要注意,struts2標籤自帶的樣式問題,一般不使用,會設定為simple。