posts - 431,  comments - 344,  trackbacks - 0

          使用Springmodules的Commons Validator做驗證需要兩個bean(ValidatorFactoryBeanValidator)及兩xml文件(validator-rules.xmlvalidation.xml)的支持,ValidatorFactory用于制造BeanValidator,后者則是在程序中執行校驗的控制bean。validator-rules.xml中定義了各種驗證的規則,如字段不為空,字段輸入值必須為整數等等,在這里可以自己擴展驗證規則。而validation.xml中則定義了那些bean及bean中的哪些屬性字段需要驗證,使用哪些驗證規則。validate 分為兩級驗證,客戶端驗證(javascript)和服務器端驗證。以下是使用validate的步驟:

          1.       在配置<action>-servlet.xml文件中聲明ValidatorFactoryBeanValidator
          <!-- validation -->
           <bean id="validatorFactory" class="org.springmodules.validation.commons.DefaultValidatorFactory">
              <property name="validationConfigLocations">
                  <list>
                      <value>WEB-INF/validator-rules.xml</value>
                      <value>WEB-INF/validation.xml</value>
                  </list>
              </property>
           </bean>
           
           <bean id="beanValidator" class="org.springmodules.validation.commons.DefaultBeanValidator">
               <property name="validatorFactory" ref="validatorFactory"/>
           </bean>
          ①     聲明validatoFactory 這里我們使用DefaultValidatorFactory
          ②     定義其validationConfigLocations屬性,將validator-rules.xml和validation.xml傳入
          ③     聲明beanValidator 這里我們使用DefaultBeanValidator
          ④     在其屬性中指明要使用的validatorFactory 。這里我們使用剛剛定義的validatorFactory
          這里需要注意的是隨著Springmodules版本的不同,DefaultValidatorFactory和DefaultBeanValidator的包路徑有可能不同。

          2.       在需要進行驗證的controller(即要使用form表單或者command的controller)中聲明validate。
          <bean id="compoundMainController" class="com.founder.action.CompoundMainController">
             <property name="formView">
              <value>regcompound</value>
             </property>
             <property name="successView">
              <value>regcompound</value>
             </property>
             <property name="commandClass">
              <value>com.founder.domain.ChemicalInfo</value>
             </property>
             <property name="commandName">
              <value>chemicalInfo</value>
             </property>
             <property name="compoundService">
              <ref bean="compoundService"/>
             </property>
             <property name="validator" ref="beanValidator" />
           </bean>
          ①     commandName 用于指明需要驗證的 command的名字,這個名字必須和 validation.xml中<form name=" xxxxx "> 所寫的名字保持一致。
          ②     commandClass用于指定這個command的類型。其必須與你jsp提交的form最后形成的command類型相一致。
          ③     聲明該controller使用validator,這里將我們剛剛定義的beanValidator傳入進去。

          3.       validation.xml文件中,定義你要校驗的formbean(或者說是command) ,定義這個bean中有哪幾個field需要驗證,使用何種規則驗證。(注意:這里定義的form name 必須和前面controller中定義的commandName保持一致)以下是幾種常用的驗證示例:
                  <form name="chemicalInfo">
                      <field property="saltForm" depends="maxlength,required">
                          <arg0 key="chemicalInfo.saltForm.displayName" />
                          <arg1 name="maxlength" key="${var:maxlength}" resource="false" />
                          <var>
                              <var-name>maxlength</var-name>
                              <var-value>30</var-value>
                          </var>
                      </field>
                      <field property="saltNumber" depends="required">
                          <arg0 key="chemicalInfo.saltNumber.displayName" />
                      </field>
                  </form>
          而validator-rules.xml默認模板可以從下載的spring-modules-0.9.zip(當然你下的版本可能不同)里面的可以找到。

          4.  jsp頁面中定義錯誤信息顯示語句:
          <spring:bindpath="chemicalInfo.*">   -----①
              <c:iftest="${not empty status.errorMessages}">
              <div class="error">  
                  <c:forEachvar="error" items="${status.errorMessages}">
                      <c:outvalue="${error}"escapeXml="false"/><br/>
                  </c:forEach>
              </div>
              </c:if>
          </spring:bind>
          ①      這里的path必須要與傳入該 jsp的bean的名字一樣。如傳入該jsp的數據bean叫chemicalInfo,path就應該寫為chemicalInfo.*。

          5使客戶端產生javascript代碼:
          <v:javascriptformName="chemicalInfo"    -----①
          staticJavascript="false" xhtml="true" cdata="false"/>
          <script type="text/javascript" src="<c:urlvalue="scripts/validator.jsp"/>"></script>
           
          ①      v:javascript標簽是spring的標簽,定義在spring-commons-validator.tld 。其中formName必須與validation.xml中form的name保持一致。
          posted on 2009-01-08 22:54 周銳 閱讀(2435) 評論(0)  編輯  收藏 所屬分類: Spring
          主站蜘蛛池模板: 汉川市| 沭阳县| 扎鲁特旗| 武川县| 鞍山市| 莲花县| 孟村| 闽侯县| 民勤县| 仁化县| 山西省| 张家川| 靖西县| 米林县| 密山市| 江山市| 咸阳市| 福泉市| 乳源| 安岳县| 镇安县| 大邑县| 桐梓县| 云龙县| 库车县| 玉溪市| 郓城县| 勃利县| 克拉玛依市| 监利县| 武陟县| 西藏| 隆子县| 鸡泽县| 万州区| 安徽省| 河西区| 开封县| 古丈县| 紫云| 东辽县|