Java论坛网»Java技术»新手请教:为什么我的validator框架不验证?

新手请教:为什么我的validator框架不验证?

问?:
validation.xml:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
<form-validation>
<global>
<constant>
<constant-name>telNumber</constant-name>
<constant-value>^\d{8}\d*$</constant-value>
</constant>
</global>
<formset>
<form name="RegisterForm">
<field
property="userName"
depends="required">
<arg0 key="userName"/>
</field>

<field
property="password"
depends="required">
<arg0 key="password"/>
</field>
<field
property="password1"
depends="required">
<arg0 key="password1"/>
</field>
<field
property="telNumber"
depends="required,mask,minlength">
<arg0 key="telNumber"/>
<arg1 name="minlength" key="${var:minlength}" resource="false"/>
<var>
<var-name>mask</var-name>
<var-value>${phone}</var-value>
</var>
<var>
<var-name>minlength</var-name>
<var-value>7</var-value>
</var>
</field>
</form>
</formset>

</form-validation>

validator-rules.xml:

<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
<!--

This file contains the default Struts Validator pluggable validator
definitions. It should be placed somewhere under /WEB-INF and
referenced in the struts-config.xml under the plug-in element
for the ValidatorPlugIn.

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
</plug-in>

These are the default error messages associated with
each validator defined in this file. They should be
added to your projects ApplicationResources.properties
file or you can associate new ones by modifying the
pluggable validators msg attributes in this file.

# Struts Validator Error Messages
errors.required={0} is required.
errors.minlength={0} can not be less than {1} characters.
errors.maxlength={0} can not be greater than {1} characters.
errors.invalid={0} is invalid.

errors.byte={0} must be a byte.
errors.short={0} must be a short.
errors.integer={0} must be an integer.
errors.long={0} must be a long.
errors.float={0} must be a float.
errors.double={0} must be a double.

errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}.
errors.creditcard={0} is an invalid credit card number.
errors.email={0} is an invalid e-mail address.

-->
<global>
<validator name="required"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionErrors,
javax.servlet.http.HttpServletRequest"
msg="errors.required">
</validator>
<validator name="minlength"
classname="org.apache.struts.validator.FieldChecks"
method="validateMinLength"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionErrors,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.minlength">
</validator>
<validator name="maxlength"
classname="org.apache.struts.validator.FieldChecks"
method="validateMaxLength"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionErrors,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.maxlength">
</validator>
<validator name="mask"
classname="org.apache.struts.validator.FieldChecks"
method="validateMask"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionErrors,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.invalid">
</validator>
<validator name="email"
classname="org.apache.struts.validator.FieldChecks"
method="validateEmail"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionErrors,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.email">
</validator>

</global>

RegisterForm.java
package file.form;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionMessage;

public class RegisterForm
extends ActionForm {
private String userName;
private String password;
private String password1;
private String name;
private String sex;
private String telNumber;
private String email;

public void setUserName(String userName) {
this.userName = userName;
}

public String getUserName() {
return userName;
}

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

public String getPassword() {
return password;
}

public void setPassword1(String password1) {
this.password1 = password1;
}

public String getPassword1() {
return password1;
}

public void setName(String name) {
this.name = name;
}

public String getName() {
return name;
}

public void setSex(String sex) {
this.sex = sex;
}

public String getSex() {
return sex;
}

public void setTelNumber(String telNumber) {
this.telNumber = telNumber;
}

public String getTelNumber() {
return telNumber;
}

public void setEmail(String email) {
this.email = email;
}

public String getEmail() {
return email;
}

}

struts-config 里面是这样的

<action path="/RegisterAction"
name="RegisterForm"
scope="request"
type="file.action.RegisterAction"
input="/register.jsp"
validate="true">
<forward name="success" path="/success.jsp"/>
<forward name="failture" path="/failture.jsp"/>
</action>
而 register.jsp里面
<html:form action="/RegisterAction.do" >

就是不验证,可以进入到action里面去 请高手指教哈子 我是新手
答!: 1:
public class RegisterForm
extends ActionForm
改为
extends ValidatorForm

验证的时候执行的是validate方法,你没重写这个方法,所以直接调用ActionForm.validate()返回null所以没验证!
ValidatorForm 继承自 ActionForm ,他重写了validate()实现了验证功能
答!: 2:
还是不验证 是不是还要修改什么东西 谢谢 他直接就跳到http://localhost:8080/WebModule1/RegisterAction.do上面去了 页面什么都没有
答!: 3:
validator验证不是XWORK的校验器吗?
struts也能套用?
是吗?
答!: 4:
要验证的页面<html:form>标签如下所写。
<html:form action="ITIL411" focus="assetTag" styleId="ITIL411Form" onsubmit="return validateITIL411Form(this)">
。。。。。。
</html:form>
页面结尾处再加上
<html:javascript formName="ITIL411Form" cdata="false" dynamicJavascript="true" staticJavascript="false"/>
<script type="text/javascript" src="<c:url value='/scripts/validator.jsp'/>"></SCRIPT>
form名改成你自己form的名字。看好不好用。

答!: 5:
validate和struts的版本有问题吧可能
答!: 6:
不会有问题吧 都是JBuilder自带的啊
答!: 7:
希望高手看看 救命啊
答!: 8:
应该是验证了。把你的Application.properties发上来看看。
里面有没有errors.required={0} is required.
答!: 9:
若过要用验证框架的话 老兄建议你用动态表单

相关JAVA教程:
大家帮我看看,在spring环境下做单元测试怎么通不过呀,错误日志
客户端调用Sun Application Server 的EJB问题
myeclipse中启动jboss错误!
APPFUSE中的问题
一个长久未解决的问题
如何从资源文件给Struts的标签初值?
一个建表的问题
调试roller2.3版的blog问题
eclipse+weblogic 开发j2ee时怎么生成ejb-jar.xml等描述符文件?
Hibernate+Struts 使用PropertyUtils拷贝Form表单对象至VO类 保存至数据库时Date类型无法转换?
"0x004385ae"指令引用的"0X0000014"内存.该内存不能为"read".
在JBoss4.0.4中怎样设置JMS-MDB实例池的上限?