现在的位置: 首页 > 综合 > 正文

自定义Validator验证 更新中…

2013年12月16日 ⁄ 综合 ⁄ 共 3576字 ⁄ 字号 评论关闭

准备工作都做好了那就开始了:

(1).在struts-config.xml内做一下配置:

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
  <set-property property="pathnames"

      value="/WEB-INF/validator-rules.xml,/WEB-INF/validator.xml" />
 </plug-in>

但要注意<plug-in> </plug-in>的位置在<message-resources/>之后要不就报错了

validator-rules.xml是struts自带的xml文件,validator.xml是自己建立的xml文件

建立xml文件步骤:WEB-INF->右键New->XML(basic Templates)->起一个名next->第一个Create xml file from aDTD file->next->Create xml catalog entry->选择第二个,下一步就OK了.

(2).在validator.xml内添加

<form-validation>
 <formset>
  <form name="loginForm">
   <field property="userName" depends="MyNull"></field>
  </form>
 </formset>

</form-validation>

loginForm为建立的Form对象userName为属性名,MyNull为验证规范名在validator-rulers.xml内定义

(3).在validator-rulers.xml最后添加

   <validator name="MyNull"
            classname="com.accp.t04.struts.bean.JudgeNull"
               method="getJudgeNull"
         methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionMessages,
                       org.apache.commons.validator.Validator,
                       javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="errors.myjudgenull"
           jsFunction="org.apache.commons.validator.javascript.MyNull"/>

 

classname="com.accp.t04.struts.bean.JudgeNull"为建立判断逻辑处理的java类

method="getJudgeNull"为方法名

methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionMessages,
                       org.apache.commons.validator.Validator,
                       javax.servlet.http.HttpServletRequest"

为固定参数
msg="errors.myjudgenull"
需要在property文件中设置的

为错误标签属性名

(4).建立java类及方法:

package com.sun.demo.valid;

import org.apache.commons.validator.ValidatorUtil;

public class JudgeNull {
     public boolean getJudgeNull(java.lang.Object obj,
       org.apache.commons.validator.ValidatorAction validatorAction,
       org.apache.commons.validator.Field field,
       org.apache.struts.action.ActionMessages actionMessage,
       org.apache.commons.validator.Validator validator,
       javax.servlet.http.HttpServletRequest request) {
        // com.sun.demo.form.RegistForm loginForm = (RegistForm) obj;
      String userName = ValidatorUtil.getValueAsString(obj, field.getProperty());
      System.out.println("liuhu remind: userName =  " +userName);
      if ("".equals(userName)|| null == userName) {
       actionMessage.add(field.getKey(), new ActionError("errors.myjudgenull"));
       //errors.add( field.getKey(), Resources.getActionError(request, va, field));
       return true;
      }
      return false;

     }
    
//     public static boolean validateTwoFields(  Object bean,
//             ValidatorAction va, Field field, ActionErrors errors, HttpServletRequest request) {
//             String value = ValidatorUtil.getValueAsString(bean, field.getProperty());
//             String sProperty2 = field.getVarValue(secondProperty);
//             String value2 = ValidatorUtil.getValueAsString(bean, sProperty2);
//              
//
//             if (!GenericValidator.isBlankOrNull(value)) {
//             try {
//             if (!value.equals(value2)) {
//             errors.add( field.getKey(), Resources.getActionError(request, va, field));
//             return false;
//             }
//             } catch (Exception e) {
//             errors.add( field.getKey(), Resources.getActionError(request, va, field));
//             return false;
//             }
//             }
//             return true;
//             }
             //}

    }

现在基本就完事了,在struts自带的property文件中设置一下错误信息就Ok了

errors.myjudgenull=userName cann't null.

现在到页面上看看


现在一切都OK了,到浏览器上看看吧....

抱歉!评论已关闭.