posts - 297,  comments - 1618,  trackbacks - 0
               說明:本文翻譯自:struts-2.0.8\docs\docs\validating-input.html

               在驗證輸入這一小節中,我們使用驗證框架來驗證提交到表單的數據。在“本地化輸出”這一節中,我們將驗證信息移到消息資源文件中。

               當創建web應用程序的時候,我們發現我們在多個頁面中常常使用一些相同的消息或字段標簽。如果我們的系統由不同語言的用戶使用時,我們也想要本地化消息。

          一.             本地化驗證信息和屬性值

               讓我們增加一個消息資源文件,并且在其中加入驗證信息和字段標簽。

          1.代碼

               本框架將消息資源與類聯系起來。為了為Logon action增加一個消息資源,我們需要將消息資源文件命名為Logon.properties,并且在Logon Action后設置它的classpath。但是,大多數人發現為某一個類使用一個單獨的資源文件時間和低效率的工作。很多人更喜歡為一整個類包增加一個消息資源文件。為了做到這樣,我們可以簡單的為某個包增加一個paacage.properties文件。例如。我們為tutorial包增加一個資源文件tutorial/package.properties。該文件內容如下:

          requiredstring = $\{getText(fieldName)} is required.
          password = Password
          username = User Name

               我們還需要改變一下驗證器和Logon頁面。

               Logon-validation.xml修改的地方:

           <message>Username is required</message>
          <message key="requiredstring"/>

          <message>Password is required</message>
          <message key="requiredstring"/>

               Logon,jsp修改的地方如下:

          <s:textfield label="User Name" name="username"/>
          <s:textfield label="%{getText('username')}" name="username"/>

          <s:password label="Password" name="password" />
          <s:password label="%{getText('password')}" name="password" />

          2. 代碼是如何工作的?

             1)“key”屬性告訴驗證器為一個消息資源捆綁驗證;

              2) 在資源捆綁中,表達式:${getText(fieldName)}告訴框架在資源文件中查找字段名。這種方式下我們能夠為所有的非空驗證使用相同的默認信息;

               3)相似地,在文本域中,表達式:%{getText(‘password’)}告訴框架在資源文件中尋找“password”。

          二.             本地化其余的信息

              其余的頁面元素也能夠被本地化。例如,我們需要在資源文件中增加“Hello World”和“Missing page”這兩個消息。

          1. 代碼

          tutorial/package.properties

          # ... 
          HelloWorld.message = Struts is up and running ...
          Missing.message = This feature is under construction. Please try again in the next interation.

              這對HelloWorld是可運行的,因為Hello World已經存在于包中。但是它對于默認的Missing action是不可用的,除非你將我們的基類加入到tutorial包中。

              TutorialSupport.java的代碼如下:

          package tutorial;
          import com.opensymphony.xwork2.ActionSupport;
          public class TutorialSupport extends ActionSupport {}

              并且還需要更新一下struts.xml默認的通配符映射,如下:

          <action name="*" class="tutorial.TutorialSupport">
           <result>/{1}.jsp</result>
          </action>

              現在,我們可以更新HelloWorld.jspMissing.jsp來查找信息。

              Missing.jsp的代碼如下:

          This feature is under construction. Please try again in the next interation.
          <s:text name="Missing.message"/>

              在HelloWorld的情況下,我們從Action類設置消息。讓我們更新一下class,使用資源文件來代替它。HelloWorld的代碼如下:

          package tutorial;
          public class HelloWorld extends ExampleSupport {
              
          public static final String MESSAGE = "HelloWorld.message";
              
          public String execute() throws Exception {
                  setMessage(getText(MESSAGE));
                  
          return SUCCESS;
              }

           
           
          //  
          }


          2. 代碼是如何工作的?

             1)對于Missing.jsp,我們使用text標簽來查找資源文件中的消息;
           
            2) HelloWorld中,我們在Action類中使用getText()方法來獲得消息;

             3)  HelloWorld.jsp中,只是顯示由Action類設置的消息,所以不要做任何改變。

          三.             需要記住的東西

              框架支持國際化。為了本地化應用,我們增加了資源文件,并且更新某些元素或標簽來應用資源文件中的資源而不是靜態的文本。

          下一篇:struts2-blank-2.0.8實例解析
          上一篇:驗證輸入信息

          posted on 2007-08-01 08:55 阿蜜果 閱讀(2589) 評論(2)  編輯  收藏 所屬分類: Struts2


          FeedBack:
          # re: Struts學習進階(七)——本地化輸出
          2007-08-01 19:53 | jvlstudio
          期待  回復  更多評論
            
          # re: Struts學習進階(基礎篇七)——本地化輸出
          2007-08-04 11:13 | dsad
          www.cctvten.com  回復  更多評論
            
          <2007年8月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

                生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
                我的作品:
                玩轉Axure RP  (2015年12月出版)
                

                Power Designer系統分析與建模實戰  (2015年7月出版)
                
               Struts2+Hibernate3+Spring2   (2010年5月出版)
               

          留言簿(263)

          隨筆分類

          隨筆檔案

          文章分類

          相冊

          關注blog

          積分與排名

          • 積分 - 2296321
          • 排名 - 3

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 长宁县| 崇仁县| 定结县| 五莲县| 呼和浩特市| 长宁区| 东平县| 红原县| 黎平县| 双峰县| 枣强县| 寿光市| 博白县| 南充市| 龙南县| 荥阳市| 长垣县| 都昌县| 朝阳县| 军事| 富宁县| 平阴县| 鄂托克前旗| 黄石市| 敖汉旗| 旬阳县| 湘潭县| 青铜峡市| 延长县| 静安区| 西平县| 噶尔县| 黔西| 余江县| 鄂州市| 平果县| 宣汉县| 那坡县| 勐海县| 增城市| 靖安县|