很不好意思,本人搞了很长时间validator框架,但是,validator框架就是不好用。
在网上找了几个例子,自己也作了个简单的服务器端验证的例子。就是提交一个文本框到下个页面,如果这个文本框为空就崩错,返回到本页。
<action path="/CustRegistAction"
            name="CustRegistForm"
            type="navi_3g.action.CustRegistAction"
            validate="true"
            scope="request"
            input="/view/jsp/custregist.jsp">
            
            <forward name="Ok" path="/view/jsp/helloresult.jsp"/>
</action>  <!-- An example form -->
       <form name="/CustRegistAction">  
             <field property="txtCellNumber" depends="required,mask">
                 <arg key="CustRegistForm.txtCellNumber"/> 
                 <var><var-name>mask</var-name>
                 <var-value>^[0-9a-zA-Z]*$</var-value>
                 </var>                 
             </field>  
       </form>   <validator name="required"
                   classname="org.apache.struts.validator.FieldChecks"
                   method="validateRequired"
                   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.required"/>

解决方案 »

  1.   

    为什么网上的例子里都没有Action文件,我估计自己写的Action文件有问题,程序执行之后,没蹦错,还是转到下个页去了,恳请各位高手指教!!!
    最好给一个完整的例子!感激不尽!
      

  2.   

    你用的是struts2的validator客户端验证吧,要是这样的话,你只要做到以下几点就可以了:
    1. <s:form validate=“true“></s:form>中添加validate=“true"
    2. 要输入的数据全部用<s:textfield>之类的strust2标签
    3.验证文件必须为  实体类名-要验证的action名-validation.xml 如:UserAction-create-validation.xml , create必须在struts.xml中的action中配置
      

  3.   

    不好意思,没注意,你用的是struts1,丢人了
      

  4.   

    我用的是struts1.3.10,validator框架和struts版本有关系吗?
      

  5.   

    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>2.actionForm要至少继承ValidatorForm
    3.在action中validate属性要设置成true
    4.在validator.xml配置文件中配置name=CustRegistForm的属性要和页面的属性对应起来。
      

  6.   

    是对form进行验证,怎么看你写的跟验证action似的。
    你要是想研究验证的话,可以去你下的struts的包中找下例子,里面有例子的
      

  7.   

    最好还是写js验证
    下面是validator例子
    http://blog.csdn.net/yefengmeander/archive/2009/01/12/3761767.aspx
      

  8.   

    up.一般2,3最容易忘记了。lz仔细检查一下吧。
      

  9.   

    我有接触 webwork的验证框架,它是需要一个validate。xml的配置文件,里面配置需要用到的验证器。不知道你这里需要不需要
      

  10.   

    我现在是Action里的程序不会写
    public class CustRegistAction extends Action{ @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {

    CustRegistForm custregistform=(CustRegistForm)form;
    //ActionErrors errors=custregistform.validate(mapping, request);
    if (?????)){
    request.setAttribute("cellnumber",custregistform.getTxtCellNumber());

    return mapping.findForward("Ok");
    }
    else{
    return mapping.findForward("failure");
    }

    }

    }请高手看一下!
      

  11.   

    你写的action方法有点奇怪哦 如果你想用struts1.x的验证直接在action或form里面实现validate方法 简单的form里进行验证
    public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) {
    ActionErrors errors = new ActionErrors();
    if (username == null || username.equals("")) {
    errors.add("username", new ActionMessage(
    "login.error.username"));
    }
    if (password == null
    || password.equals("")) {
    errors.add("password", new ActionMessage(
    "login.error.password"));
    }
    arg1.setAttribute("loginFormBean", this);
    return errors;
    }