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的验证。
谁帮帮忙解决下,谢谢了。
<!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的验证。
谁帮帮忙解决下,谢谢了。
姓名:aa
年龄:11
性别:男
点击提交后,页面跳到成功页面。
如果在index.jsp中不输入,或者不全输入姓名,年龄,性别,那么就会跳转到errors.jsp页面,而不是在index.jsp页面中报出错误信息。所以,我的理解是,在struts-config.xml中,是不是应该把input="/jsp/errors.jsp"(问题中没有写这句,是后加的)改成input="/jsp/index.jsp",当表单提交过程过程中,被validation check住了,那么就返回原页面,这样理解对嘛?