<struts-config>
  <data-sources />
  <form-beans >
    <form-bean name="loginForm" type="org.apache.struts.action.DynaActionForm" >
     <form-property name="userName" type="java.lang.String"></form-property>
     <form-property name="password" type="java.lang.String"></form-property>
</form-bean>
  </form-beans>  <global-exceptions />
  <global-forwards>
<forward name="error" path="error.jsp"></forward>
</global-forwards>
  <action-mappings >
    <action
      attribute="loginForm"
      input="/index.jsp"
      name="loginForm"
      path="/index"
      validate="true"
      scope="request"
      
      type="bbs.struts.action.LoginAction">
       <set-property property="cancellable" value="true"/>
      <forward name="success" path="/success.jsp" />
      <forward name="DbFail" path="/dbfail.jsp" />
      <forward name="LoginFail" path="/loginfail.jsp" />
      <forward name="regist" path="/regist.jsp" />
      
    </action>

  </action-mappings>
  <message-resources parameter="bbs.struts.ApplicationResources" />
  <plug-in className="org.apache.struts.validator.ValidatorPlugIn" >
   <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
  </plug-in>
</struts-config>validation.xml:
<form-validation>
<formset >
<form name="loginForm" >
<filed property="userName" depends="required" >
<msg name="required" key="login.userName.missing" />

</filed>
</form>
</formset>
</form-validation>LoginForm.java:
public class LoginForm extends ValidatorActionForm
 { 
private String password;
private String userName; public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getUserName() {
return userName;
} public void setUserName(String userName) {  
this.userName = userName;
}}
当我提交的时候根本就没有验证,直接去执行Action的execute方法了。

解决方案 »

  1.   

    应该是你的validation.xml写的不太对
      

  2.   

    你的form-bean应该继承type="org.apache.struts.validator.DynaValidatorForm",另外下面的也不需要,因为你用的动态验证的bean:
    LoginForm.java: 
    public   class   LoginForm   extends   ValidatorActionForm 
      {   
    private   String   password; 
    private   String   userName; public   String   getPassword()   { 
    return   password; 
    } public   void   setPassword(String   password)   { 
    this.password   =   password; 
    } public   String   getUserName()   { 
    return   userName; 
    } public   void   setUserName(String   userName)   {     
    this.userName   =   userName; 
    } } 
      

  3.   

    index.jsp:
    <table>
    <html:form action="/index">
    <tr><td width="52">用户名</td><td><html:text property="userName"/><html:errors property="userName"/></td></tr>
    <tr><td>密码</td> <td><html:password property="password"/><html:errors property="password"/></td></tr>

    <tr><td><html:submit>登录</html:submit></td>
    <td><html:cancel>注册</html:cancel></td></tr>

    </html:form>
    </table>
    运行没有报错,只是不验证,直接去执行Action的execute方法了。
    karlpan01 说我的validation.xml写的不太对怎么改?
    按burningice44 说的改了下,也不行。
      

  4.   

    <html:javascript formName="loginForm"/>
    <html:form action="/index" onsubmit="return validateLoginForm(this);">
      

  5.   

    楼上的用你的方法,出现了错说找不到loginForm
    javax.servlet.jsp.JspException: No form found under 'loginForm' in locale 'zh_CN'
    org.apache.struts.taglib.html.JavascriptValidatorTag.renderJavascript(JavascriptValidatorTag.java:384)
    org.apache.struts.taglib.html.JavascriptValidatorTag.doStartTag(JavascriptValidatorTag.java:349)
    这个loginForm在struts-config.xml  与validation.xml里面都有配置为什么又说找不到呢??
    初学 struts谢谢来帮我解决下。
      

  6.   

    继承VALIDATORFORM,把FORM中的VALIDATE方法删除 不知道写的对不,还有ACTION中的ISVALIDATE=true也必须
      

  7.   

    晕,原来是validation.xml里的<filed>写错了(field)   ..
    以后要小心了。