楼主还没有理解
struts1.2之后并没有摈弃actionForm 中的validate方法,我们照样可以使用
你说的validation.xml和validate-rules.xml是validate框架,它的验证原理是生成js代码,其实还是客户端验证。
而ActionForm里面的validate方法是服务器端验证。
他们不矛盾的,我们一般结合起来使用他们。

解决方案 »

  1.   

    我现在看得是struts1.2.7 中的那个validator的第一个例子
    链接是http://127.0.0.1/struts-examples/validator/registration.do我看了他的源码,发现LoginActionForm里面并没有使用validator方法
    并且也没有使用js客户端验证,因为在registration.jsp下没有使用<html:javascript 
    这个标记,并且验证后的效果是在网页显示,并不是弹出对话框,所以必然是服务器端验证
    问题就是他没有写validator方法如何进行的验证,难道只是配置了struts-config.xml和validation.xml,但是我这样试了,行不通,总是不经过验证直接就跳转至欢迎页面! 这就是我心中的疑惑,他如何生效的??
    请指教!!谢谢!
      

  2.   

    确实只要在validation.xml里面配置一下对具体的Form的验证规则就可以了
    然后页面里面加上这个
    <html:form action="/login" method="post" focus="loginname" onsubmit="return validateLoginForm(this);">这个是我自己写的,LoginForm是在struts-config.xml里面配置的FormBean的名字
      

  3.   

    还是通过不了,下面是我的代码,请看一下!login.jsp<%@ page contentType="text/html; charset=GBK" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
    <html:html>
    <head>
    <title>mvc test</title>
    </head><body>
    <html:errors/>
    <html:form action="/login" method="post" focus="userName" onsubmit="return  validateloginActionForm(this);">
    <table width="43%" border=1 align="center" cellpadding="0" cellspacing="0">
    <tr>
    <th width="49%" align="right">userName:</th>
    <td width="51%" align="left">
    <html:text property="userName" size="20" maxlength="20"/>
    </td>
    </tr>
    <tr>
    <th align="right">password:</th>
    <td align="left">
    <html:password property="password" size="20" maxlength="20"/>
    </td>
    </tr>
    <tr>
    <td align="right">
    <html:submit/>
    </td>
    </tr>
    </table>
    </html:form>
    </body>
    </html:html>struts-config.xml<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
    <struts-config>
      <form-beans>
        <form-bean name="loginActionForm" type="struts.LoginActionForm" />
      </form-beans>
      <action-mappings>
        <action input="input" name="loginActionForm" path="/login" scope="session" type="struts.LoginAction" validate="true">
        <forward name="input" path="/login.jsp" />
        <forward name="success" path="/hello.jsp">
       </forward>
        </action>
      </action-mappings>
      <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>
    </struts-config>validation.xml<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
    <form-validation>
    <formset>
    <form name="loginAtionForm">
          <field property="userName" depends="required">
            <arg0 key="app.userName"/>
          </field>
          <field property="password" depends="required">
            <arg0 key="app.password"/>
          </field>
          </form>
      </formset>
    </form-validation>
    LoginActionForm.javapackage struts;import org.apache.struts.validator.ValidatorForm;
    import org.apache.struts.action.ActionMapping;
    import javax.servlet.http.HttpServletRequest;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionMessage;public class LoginActionForm
        extends ValidatorForm {
      private String password;
      private String userName;
      public String getPassword() {
        return password;
      }  public void setPassword(String password) {
        this.password = password;
      }  public void setUserName(String userName) {
        this.userName = userName;
      }  public String getUserName() {
        return userName;
      }}
    LoginAction.javapackage struts;import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionForm;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMessages;
    import org.apache.struts.action.Action;
    import javax.servlet.http.HttpSession;public class LoginAction
        extends Action {
      public ActionForward execute(ActionMapping actionMapping,
                                   ActionForm actionForm,
                                   HttpServletRequest request,
                                   HttpServletResponse servletResponse) {
       LoginActionForm loginActionForm = (LoginActionForm) actionForm;
        loginActionForm.setUserName("loginName");
        loginActionForm.setPassword("password");
        return actionMapping.findForward("success");
      }
    }
    请指教,多谢!!!
      

  4.   

    loginActionForm<formset>
    <form name="loginAtionForm">
          <field property="userName" depends="required">
    不知道是不是你的代码贴错了,上面的form名字要统一其他我也没看出问题:(当然我的页面里面加了
    <html:javascript formName="LoginForm" />
      

  5.   

    <form name="loginAtionForm">
                ~~~~~~~~
      

  6.   

    不过还是没有搞明白struts1.2.7里面那个例子是怎么回事!
    唉!
      

  7.   

    我在struts-config.xml和validation.xml
    写的都是loginActionForm jsp页面里面也是loginActionForm哪里还不一致呀?!!