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>
  <data-sources />
  <form-beans >
    <form-bean name="personForm" type="org.ie.struts.form.PersonForm" />  </form-beans>  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action
      attribute="personForm"
      name="personForm"
      path="/person"
      scope="request"
      type="org.ie.struts.action.PersonAction"
      validate="true">
      <forward name="end" path="/jsp/end.jsp"></forward>
      </action>  </action-mappings>  <message-resources parameter="org.ie.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<!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="personForm">
<field property="name" depends="required">
<arg key="err.name"/>
</field>
<field property="age" depends="required">
<arg key="err.age"/>
</field>
<field property="sex" depends="required">
<arg key="err.sex"/>
</field>
</form>
</formset>
</form-validation>ApplicationResources.properties# Resources for parameter 'org.ie.struts.ApplicationResources'
# Project ValidatorDemo
errors.required={0} is required.
err.name=name
err.age=age
err.sex=sexPersonForm.java/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package org.ie.struts.form;import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.ValidatorForm;/** 
 * MyEclipse Struts
 * Creation date: 07-02-2009
 * 
 * XDoclet definition:
 * @struts.form name="personForm"
 */
public class PersonForm extends ValidatorForm {
/*
 * Generated fields
 */ /** sex property */
private String sex; /** age property */
private String age; /** name property */
private String name; /*
 * Generated Methods
 */ /** 
 * Method validate
 * @param mapping
 * @param request
 * @return ActionErrors
 */
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return null;
} /** 
 * Method reset
 * @param mapping
 * @param request
 */
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
} /** 
 * Returns the sex.
 * @return String
 */
public String getSex() {
return sex;
} /** 
 * Set the sex.
 * @param sex The sex to set
 */
public void setSex(String sex) {
this.sex = sex;
} /** 
 * Returns the age.
 * @return String
 */
public String getAge() {
return age;
} /** 
 * Set the age.
 * @param age The age to set
 */
public void setAge(String age) {
this.age = age;
} /** 
 * Returns the name.
 * @return String
 */
public String getName() {
return name;
} /** 
 * Set the name.
 * @param name The name to set
 */
public void setName(String name) {
this.name = name;
}
}PersonAction.java/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package org.ie.struts.action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.ie.struts.form.PersonForm;/** 
 * MyEclipse Struts
 * Creation date: 07-02-2009
 * 
 * XDoclet definition:
 * @struts.action path="/person" name="personForm" scope="request" validate="true"
 */
public class PersonAction extends Action {
/*
 * Generated Methods
 */ /** 
 * Method execute
 * @param mapping
 * @param form
 * @param request
 * @param response
 * @return ActionForward
 */
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
PersonForm personForm = (PersonForm) form;// TODO Auto-generated method stub
String name = personForm.getName();
String age = personForm.getAge();
String sex = personForm.getSex();
System.out.println(name + "--" + age + "--" + sex);
return mapping.findForward("end");
}
}index.jsp①<%@ page language="java" pageEncoding="GBK"%><%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%><html:html lang="true">
<head>
<title>index.jsp</title></head><body>
<html:errors/>
<html:form action="/person.do" method="post" >

<table border="0">
<tr>
<td>
姓名:
</td>
<td>
<html:text property="name" />
</td>
</tr>
<tr>
<td>
年龄:
</td>
<td>
<html:text property="age" />
</td>
</tr>
<tr>
<td>
性别:
</td>
<td>
<html:text property="sex" />
</td>
</tr>
<html:submit value="提交"></html:submit>
</table>
</html:form>

</body>
</html:html>index.jsp②<%@ page language="java" pageEncoding="GBK"%><%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%><html:html lang="true">
<head>
<title>index.jsp</title></head><body>
<html:errors/>
<html:form action="/person.do" method="post" onsubmit="return validatePersonForm(this)">

<table border="0">
<tr>
<td>
姓名:
</td>
<td>
<html:text property="name" />
</td>
</tr>
<tr>
<td>
年龄:
</td>
<td>
<html:text property="age" />
</td>
</tr>
<tr>
<td>
性别:
</td>
<td>
<html:text property="sex" />
</td>
</tr>
<html:submit value="提交"></html:submit>
</table>
</html:form>
<html:javascript formName="personForm" />
</body>
</html:html>
代码如上所示,当index.jsp是①的时候,死活就是不验证,当index.jsp是②的时候,能出来javascript的验证。
谁帮帮忙解决下,谢谢了。

解决方案 »

  1.   

    修改了一下,把PersonForm.java中的validate方法注释掉确实可以验证,但是,不会在index.jsp中报出错误信息,而是直接跳转到了errors.jsp 错误页面例如,在index.jsp中输入
    姓名:aa
    年龄:11
    性别:男
    点击提交后,页面跳到成功页面。
    如果在index.jsp中不输入,或者不全输入姓名,年龄,性别,那么就会跳转到errors.jsp页面,而不是在index.jsp页面中报出错误信息。所以,我的理解是,在struts-config.xml中,是不是应该把input="/jsp/errors.jsp"(问题中没有写这句,是后加的)改成input="/jsp/index.jsp",当表单提交过程过程中,被validation check住了,那么就返回原页面,这样理解对嘛?
      

  2.   

    对,或者指向别的画面,只要不是err.jsp就可以
      

  3.   

    那么就是说,被validation check到了,页面就会迁移到input所指定的页面,而且被validation check住的错误信息也会在input所制定的页面中报出来,并不是说,被check住了,页面就不跳转,是吗?