<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
    用登陸演示Model-Driven(模型驅動)、配置表單驗證
    本文主要在上一個視頻(webwork初體驗)的基本進行改動,所以在看本文之前,請先瀏覽上一個視頻。
    webworkAction根據Form的不同可分為二類:
    一種是Field-Driven(字段驅動)Action;就是 Action用自己的字段來充當Form的角色,上一個視頻給大家演示的例子就是采用了這種方式。本人感覺有點像struts中的動態Form
    當然這只是我自己的一些看法。還有一種是Model-Driven(模型驅動)Action。它很像StrutsForm,但在strutsForm必須繼承org.apache.struts.action.ActionForm;或是org.apache.struts.validator包下的幾個Form.WebWork中有所不同,只要普通JavaBean就可以充當模型部分。只要我們在Action中實現com.opensymphony.xwork. ModelDriven接口就可以了,它有一個方法:Object getModel();,這個方法用于返回模型對象。
    我們改動上個視頻的LoginAction類。代碼如下:
    java 代碼
    1. package com.lyx.web.action;   
    2. import com.lyx.bo.User;   
    3. import com.opensymphony.xwork.Action;   
    4. import com.opensymphony.xwork.ActionSupport;   
    5. import com.opensymphony.xwork.ModelDriven;   
    6. public class LoginAction implements Action,ModelDriven {   
    7. //注意這里的User一定要初始化   
    8.     private User user=new User();   
    9.   
    10.     public User getUser() {   
    11.         return user;   
    12.     }   
    13.     public String execute() throws Exception {   
    14.         if(user.getUserName().equals("lyx")){   
    15.             return this.SUCCESS;   
    16.         }else{   
    17.             return this.ERROR;   
    18.         }   
    19.     }   
    20.     public Object getModel() {   
    21.         // TODO Auto-generated method stub   
    22.         return user;   
    23.     }   
    24.   
    25. }  
    紅色字體部是我們后加部分。
    然后我們就可以將index.jsp頁面的代碼修改如下:
    <form action="login.action">
     
    username:<input type="text" name="userName"/>
    password:<input type="password" name="userPwd"/>
    <input type="submit" value="login"/>
    form>
    也就是我們去掉了原有的表達式語言。
    然后我們修改xwork.xml配置文件如下:
    xml 代碼
    1. <!--CTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd"</sp-->>  
    2. <xwork>  
    3.     <include file="webwork-default.xml" />  
    4.     <package name="default" extends="webwork-default">  
    5.         <action name="login" class="com.lyx.web.action.LoginAction">  
    6.             <!--  登錄成功后跳轉到 /success.jsp 頁面 -->  
    7.             <result name="success" type="dispatcher">  
    8.                 <param name="location">/success.jspparam>  
    9.             result>  
    10.             <!--  登錄失敗后跳轉到 /error.jsp 頁面 -->  
    11.             <result name="error" type="dispatcher">  
    12.                 <param name="location">/error.jspparam>  
    13.             result>  
    14.             <interceptor-ref name="model-driven"/>  
    15.             <interceptor-ref name="params"/>  
    16.         action>  
    17.     package>  
    18. xwork>  
    也就是在原有的基礎上加了一行模型驅動的攔截器。作用就是將模型對象保存到值堆棧中。
    就樣就OK了。這里要注意,model-driven攔截器要在params的上面。可以測試一下看看。
    整過過程,非常像struts中,Action與ActionForm的關系。
    通過測試,功能和以前的一樣。很簡單吧。就不在多述了。
    第二個重點我們來配置一個表單的驗證:
    在 src 目錄下新建 validators.xml 文件,文件內容如下:
    xml 代碼
    1. <validators>  
    2.     <validator name="required" class="com.opensymphony.xwork.validator.validators.RequiredFieldValidator"/>  
    3.     <validator name="requiredstring" class="com.opensymphony.xwork.validator.validators.RequiredStringValidator"/>  
    4.     <validator name="int" class="com.opensymphony.xwork.validator.validators.IntRangeFieldValidator"/>  
    5.     <validator name="date" class="com.opensymphony.xwork.validator.validators.DateRangeFieldValidator"/>  
    6.     <validator name="expression" class="com.opensymphony.xwork.validator.validators.ExpressionValidator"/>  
    7.     <validator name="fieldexpression" class="com.opensymphony.xwork.validator.validators.FieldExpressionValidator"/>  
    8.     <validator name="email" class="com.opensymphony.xwork.validator.validators.EmailValidator"/>  
    9.     <validator name="url" class="com.opensymphony.xwork.validator.validators.URLValidator"/>  
    10.     <validator name="visitor" class="com.opensymphony.xwork.validator.validators.VisitorFieldValidator"/>  
    11.     <validator name="conversion" class="com.opensymphony.xwork.validator.validators.ConversionErrorFieldValidator"/>  
    12.     <validator name="stringlength" class="com.opensymphony.xwork.validator.validators.StringLengthFieldValidator"/>  
    13. validators>  
    這個文件可以在網上下得到。也可以在webwork的源碼中得到。不是不想起了struts中有個valiator-rules.xml文件。這個文件在struts中是描述著驗證的規則,里面有好多已經寫好了的驗證,我們可以很方便的調用。這里的這個文件功能和struts中的類似。
       要啟動表單驗證需要增加一個攔截器還有就是我們在strutsstruts-config.xml配置文件中Action的配置有個input屬性,它是用來當驗證失敗時所在跳到的頁,在這里如果登陸失敗我們應該跳到index頁,顯示失敗的原因,重新登陸。在webwork中我們也用input來描述這個功能。在一個result.
    xwork.xml 文件進行修改增加<interceptor-ref name="validationWorkflowStack" />
    修改后xwork.xml代碼如下:
    xml 代碼
    1. <include file="webwork-default.xml" />  
    2.     <package name="default" extends="webwork-default">  
    3.         <action name="login" class="com.lyx.web.action.LoginAction">  
    4.             <!--  登錄成功后跳轉到 /success.jsp 頁面 -->  
    5.             <result name="success" type="dispatcher">  
    6.                 <param name="location">/success.jspparam>  
    7.             result>  
    8.             <!--  登錄失敗后跳轉到 /error.jsp 頁面 -->  
    9.             <result name="error" type="dispatcher">  
    10.                 <param name="location">/error.jspparam>  
    11.             result>  
    12.             <result name="input" type="dispatcher">  
    13.                 <param name="location">/index.jspparam>  
    14.             result>  
    15.                
    16.             <interceptor-ref name="model-driven"/>  
    17.             <interceptor-ref name="params"/>  
    18.             <interceptor-ref name="validationWorkflowStack" />  
    19.         action>  
    20.     package>  
    我們已經用到了success,他指成功所要跳到的頁。Error是錯誤所要跳到的頁。Input是指失敗時所要返回來登陸的頁。在webwork中還有幾個。以后我們會看得到,用到的時候在詳細講解。
       建立驗證規則
     
          LoginAction 進行驗證規則的配置需要新建一個配置文件文件名起名是以Action 的名稱開頭以validation結尾,中間用-隔開.xml并保存到 LoginAction.java 文件所在的目錄中
            
       代碼如下: LoginAction-validation.xml
    xml 代碼
    1. <!--CTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd"</sp-->>  
    2. <validators>  
    3.     <field name="userName">  
    4.         <field-validator type="requiredstring">  
    5.             <message>username is required!message>  
    6.         field-validator>  
    7.     field>  
    8.     <field name="userPwd">  
    9.         <field-validator type="requiredstring">  
    10.             <message> password is required!message>  
    11.         field-validator>  
    12.     field>  
    13. validators>  
    這個文件很像struts中的validation.xml。功能和他是一樣的。配置表單的驗證。這里我們只驗證也用戶名和密碼為必須填寫。注意:這個name的屬性一定要和User類中的對應。規則是和struts中一樣的。對應才能有交的驗證。
    為了能顯示驗證的信息再次修改index頁面如下:
    <ww:form action="login.action" method="POST">
             username:   <ww:textfield label="Username" name="userName" required="true"/>
              password: <ww:password label="Password" name="userPwd" required="true"/>
                <ww:submit value="Submit"/>
         ww:form>
    這幾行很簡單,從字面上就可以看出,就不在多述了。
    基本代碼就這些,測試一下,看看吧。
    哦,沒有驗證,還忘了一步,回頭看看
    除了上述的配置外,我們的Action還要繼承ActionSupport類,這個類存放著錯誤的信息,并能將錯誤的狀態返回到頁面
    在改一下,試試
    OK了。好用了。呵呵,剛是太急用了,忘了最關鍵的一步。大家在開發當中可以細心點啊。
    因為,錄這個視頻是在公司,不能有聲音講解給大家聽。請大家諒解。這段時間比較忙,過了這段時間,給大家錄個有聲音的。呵呵。
    我的聯系方式:
    MSN;Lyx_2709@hotmail.com
    Email:Lyx_happy@163.com
    就到這里吧。希望大家能多提寶貴意見!
    webwork模型驅動與表單驗證.part1.rar
     描述:  第一部分視頻
    下載
     文件名:  webwork模型驅動與表單驗證.part1.rar
     文件大小:  3 M
     下載過的:  文件被下載或查看 1277 次
    webwork模型驅動與表單驗證.part2.rar
     描述:  第二部分視頻
    下載
     文件名:  webwork模型驅動與表單驗證.part2.rar
     文件大小:  3 M
     下載過的:  文件被下載或查看 1101 次
    webworkfirst.rar
     描述:  程序源碼
    下載
     文件名:  webworkfirst.rar
     文件大小:  8 KB
     下載過的:  文件被下載或查看 350 次
    posted on 2007-09-22 21:03 禮物 閱讀(962) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 两个人的视频高清在线观看免费| 暖暖在线视频免费视频| 在线观看无码AV网站永久免费| 亚洲精品免费在线观看| 久操免费在线观看| 亚洲邪恶天堂影院在线观看| 国产亚洲免费的视频看| 久久99国产亚洲高清观看首页| 日韩电影免费在线观看| 亚洲伊人tv综合网色| 午夜性色一区二区三区免费不卡视频 | 怡红院免费全部视频在线视频 | 亚洲日韩一页精品发布| 成人性做爰aaa片免费看| 亚洲Aⅴ无码专区在线观看q| 在免费jizzjizz在线播| 亚洲精品福利你懂| 国产一区二区三区在线免费| 五月天婷婷精品免费视频| 亚洲日韩精品A∨片无码| 欧洲精品99毛片免费高清观看| 亚洲中文字幕久在线| 国产最新凸凹视频免费| 国产乱子伦精品免费视频| 亚洲欧洲日韩不卡| 好男人看视频免费2019中文| 免费看一级一级人妻片 | 亚洲精品V欧洲精品V日韩精品| 18禁超污无遮挡无码免费网站| 亚洲网站在线免费观看| 麻豆国产精品入口免费观看| 国产免费一级高清淫曰本片| 78成人精品电影在线播放日韩精品电影一区亚洲 | 456亚洲人成在线播放网站| 情侣视频精品免费的国产| 国产V片在线播放免费无码 | 精品国产亚洲AV麻豆| 亚洲成色在线综合网站| 午夜私人影院免费体验区| 三年片免费高清版 | 暖暖免费高清日本中文|