RT! 
没有报任何错误信息,就好像根本就没写似的。 
struts-config.xml <form-bean name="userLoginForm" type="com.yourcompany.struts.validator.DynaValidatorForm.UserLoginForm" > 
<form-property name="userName" type="java.lang.String" /> 
<form-property name="password" type="java.lang.String" /> <message-resources parameter="ApplicationResources" /> 
<plug-in className="org.apache.struts.validator.ValidatorPlugIn"> 
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/> 
<set-property property="stopOnFirstError" value="true"/> 
</plug-in> validation.xml <form name="userLoginForm"> 
<field property="userName" 
depends="requried,minlength"> 
<arg0 key="label.username"/> 
<arg1 name="minlength" key="${var:minlength}" resource="false"/> 
<var> 
<var-name>minlength</var-name> 
<var-value>3</var-value> 
</var> 
</field> 
<field property="password" 
depends="required,minlength"> 
<arg0 key="label.password"/> 
<arg1 name="minlength" key="${var:minlength}" resource="false"/> 
<var> 
<var-name>minlength</var-name> 
<var-value>3</var-value> 
</var> 
</field> ApplicationResources.properties title.login = Login Page 
item.submit = Submit error.name.required=A UserName is Required 
error.psw.required=A Password is Required 
error.nickname.required=A Nickname is Required 
label.username=userName 
label.password=password 
label.nickname=nickname error.required={0} can not be null. 
error.minlength={0} can not less than {1} char. 
error.maxlength={0} can not be greater than {1} characters. 
error.invalid={0} is invalid. PS:UserLoginForm中没有实现validate方法,是否需要写~为什么?

解决方案 »

  1.   

    窗体的FORM类不能继承ActionForm,要继承ValidatorForm
    窗体的FORM类一定不能实现validate方法,因为校验框架是在父类中实现的,如果在窗体的FORM类中实现了此方法,则会覆盖父类的方法
      

  2.   

    validator的这个框架。总的来说,,,不太好对付。
      

  3.   

    这个是页面:
    <%@ page language="java" pageEncoding="ISO-8859-1"%><%@ taglib uri="/WEB-INF/struts-html" prefix="html"%>
    <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html:html>
      <head>
        <html:base />
        <title>userLogin.jsp</title>
        
          <script type="text/javascript" language="javascript">   
    <!--   
            function register(){   
            var form = document.forms[0];   
            form.method = 'post';    
            form.action = 'register.jsp';  
            form.submit();   
            }
    </script>  </head>  
      <body background="image/userlogin.jpg">&nbsp;  
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <div align="center">This a struts page. <br>
        </div>
        <html:form action="userLoginAction?method=userLogin"  method="post">
        <div align="center">username 
          <html:text property="userName" size="20"/> 
          <html:errors property="userName" />
          password 
          <html:password property="password" size="20"/>
          <html:errors property="password" />
        </div>
        <p align="center">
        <html:submit  value="submit" />
        <html:reset   value="reset" />
        <html:submit  value="register" onclick="register('register') "/>
        </html:form>
        
      </body>
    </html:html>
      

  4.   

    我也遇见过,1楼的说法,我觉得是ok的。我想问validation可以做验证码的验证工作吗?也就是说,validation可以取得session中的值吗?
      

  5.   

    这个功能很强, 注:struts-config.xml中,input 属性,
    而且Action不能继承DispatchAction
      

  6.   

    form 里继承ValidatorActionFormEx了吗?如果没有也可能不报message
      

  7.   

      你在html:form标签中添加红色部分<html:form action="userLoginAction?method=userLogin"  method="post" onsubmit="validateUserLoginForm"> 
    还有你忘记写
    <html:javascript formName="userLoginForm"/>了,你没有调用验证框架而已
      

  8.   

    谢谢10楼的zeng_84_long 
    我确实没有加onsubmit="validateUserLoginForm“ 和 <html:javascript formName="userLoginForm"/>
    现在我加上了,可是还是没有任何效果,感觉没有用上似的,<html:error>也没有输出,不知道为什么~
      

  9.   

    com.yourcompany.struts.validator.DynaValidatorForm.UserLoginForm   
    改成 
    com.yourcompany.struts.validator.DynaValidatorForm你用的是动态Form吧,没有必要写Form类的名字了
      

  10.   

    刚才用Myeclipse启动了一下猫,发现有如下错误,说是找不到'/WEB-INF/validation.xml',所以validator无效!
    严重: Skipping validation rules file from '/WEB-INF/validation.xml'.  No stream could be opened.
    javax.servlet.ServletException: Skipping validation rules file from '/WEB-INF/validation.xml'.  No stream could be opened.
    怎么办?
      

  11.   

    strutsconfig的plug in里面把validation.xml加进去了吗?
      <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames"
    value="/WEB-INF/validator-rules.xml,/WEB-INF/validator.xml <set-property property="stopOnFirstError" value="false" />
    </plug-in>
      

  12.   


    呵呵,楼主,把 <html:errors /> 标签去掉,在这里不需要
    struts-config里
      <message-resources parameter="ApplicationResources" />
      <message-resources key="testrs" parameter="com.lizongbo.localstring.TestRs" />validator.xml里
        <form name="EditActionForm">
        <field property="rowid" depends="required">
          <arg key="EditActionForm.rowid" position="0" resource="true"/>
        </field>
        <field property="msgid" depends="required">
          <arg key="msgid" position="0" resource="true" bundle="testrs"/>
        </field>
        </form>
    validator其实很容易,把过程理清楚就可以。还有一个问题就是要注意validator的xml文件头的版本问题
      

  13.   

    谢谢zeng_84_long 的帮助~
    但是我想问一下,这个和我写的validation的用法,我感觉很不一样~
    没有写<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
          <set-property property="pathnames"
            value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
          <set-property property="stopOnFirstError" value="true"/>
         </plug-in>
    也没有写<html:error />
    这是为什么呢?难道有两种不同的方法么?还是怎么样~