posts - 36, comments - 30, trackbacks - 0, articles - 3

          Struts,Spring,Hibernate Web應用開發4

          Posted on 2008-01-16 15:21 笑看人生 閱讀(1868) 評論(1)  編輯  收藏 所屬分類: Web開發技術
          這節介紹如何在SSH框架中使用Validator框架,Validator框架采用基于xml文件來配置驗證規則,它主要依賴兩個jar包:commons-validator-1.3.0.jar和oro-2.0.8.jar,要在SSH使用Validator框架,必須把這兩個jar包引用進來,其實Struts框架已包含這兩個jar包,所以我們不用再單獨引入了。
                 要在SSH框架中使用Validator,更確切的說是在Struts框架中使用,可以采用插件機制把Validator加入到框架,這需要修改原來的struts-config.xml文件,增加配置ValidatorPlugIn插件,代碼如下:
          <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
          <set-property property="pathnames" value="/org/apache/struts/validator/validator-rules.xml,
          /WEB-INF/validation.xml"
           />
                
          <set-property property="stopOnFirstError" value="true" />
           
          </plug-in>
          這樣當應用啟動時,Struts框架就會加載ValidatorPlugIn插件。
          validator-rules.xml文件是Validator框架自帶的,它定義了一些常有的校驗規則,而validation.xml是我們自己定義的,它針對某個應用,內容如下:
              
          <?xml version="1.0" encoding="iso-8859-1"?>
          <!DOCTYPE form-validation PUBLIC
                    "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"
                    "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd"
          >
          <form-validation>   
           
          <formset> 
              
          <form name="registerForm">
                
          <field property="register.username" depends="required">      
                  
          <arg key="register.username" position="0"/>      
                
          </field> 
                
          <field property="register.password" depends="required,minlength">      
                  
          <arg key="register.password" position="0"/>
                  
          <arg name="minlength" key="${var:minlength}" resource="false" position="1"/>
                   
          <var>
                    
          <var-name>minlength</var-name>
                    
          <var-value>6</var-value>
                  
          </var>     
                
          </field>
                
          <field property="register.email" depends="required,email">      
                  
          <arg key="register.email" position="0"/>      
                
          </field>       
              
          </form>   
           
          </formset>
          </form-validation>

           

          form元素的name屬性指定要進行驗證的表單,field元素的property屬性指定要驗證屬性,depends定義了驗證方式,在這里,我們定義了username屬性不能為空,password屬性不能為空,并且最小長度不能小于6,email屬性必須是合法的郵件地址。定義驗證方式之后,我們還必須修改資源文件registermessages.properties,增加以下內容:

          # Errors
          errors.header=
          <h3><fontcolor="red">ValidationError</font></h3>Youmustcorrectthefollowingerror(s)beforeproceeding:
          errors.required={0}isrequired.
          errors.minlength={0}cannotbelessthan{1}characters.
          errors.email={0}isaninvalide-mailaddress.
          這資源文件中{0}對應著<arg key="" position="0"/>,{1}對應著<arg key="" position="1"/>,以此類推,如果有驗證錯誤產生,將用key的值替換{n}
           
          此外,我們還要修改struts-config.xml文件,修改內容見粗體:

          //把原來的DynaActionForm 改為DynaValidatorForm
          <form-beans>
                 
          <form-bean name="registerForm"
                     type
          ="org.apache.struts.validator.DynaValidatorForm">
                     
          <form-property name="register" type="test.register.entity.Register" />        
                 
          </form-bean>
              
          </form-beans>
          //把原來的validate="false"改為validate="true"
          <action-mappings>
                 
          <action name="registerForm" path="/register" scope="request"
                     type
          ="test.register.action.RegisterAction" validate="true"
                     input
          ="/register.jsp">
                     
          <forward name="success" path="/registerSuccess.jsp" />
                 
          </action>
              
          </action-mappings>

          修改錯誤顯示的樣式,我們在register.jsp中,替換原來<html/errors>為
          <logic:messagesPresent>
             
          <bean:message key="errors.header"/>
             
          <ul>
             
          <html:messages id="error">
                
          <li><bean:write name="error"/></li>
             
          </html:messages>
             
          </ul><hr />
          </logic:messagesPresent>

          注意在頁面上加入
          <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>

          這樣,我們運行程序,校驗失敗的效果如圖:

          Feedback

          # re: Struts,Spring,Hibernate Web應用開發4  回復  更多評論   

          2008-01-19 08:53 by Lf0x
          不錯,支持一下先 ,SSH 框架正在學習中
          主站蜘蛛池模板: 永泰县| 乡城县| 万州区| 汉源县| 高清| 盐城市| 沛县| 宣武区| 中卫市| 库尔勒市| 来宾市| 盱眙县| 墨脱县| 茶陵县| 屯留县| 绥滨县| 镇远县| 惠安县| 腾冲县| 兰西县| 天门市| 永年县| 宁波市| 阳江市| 自治县| 彩票| 左云县| 开平市| 承德县| 鹿泉市| 平定县| 浑源县| 湟源县| 开远市| 来宾市| 东山县| 新晃| 贵港市| 商都县| 天水市| 兴山县|