您的位置:首页 > 编程语言 > Java开发

struts中使用validator进行简单表单验证

2008-11-14 14:54 731 查看
1.找到validator相关文件.
要点:找到validator核心文件:validation.xml,validator-rules.xml.
validator相关文件在已经下载的struts框架包中,以struts-1.2.9-bin.zip包为例,可以从struts-1.2.9-bin/webapps/struts-examples.war下找到validator-rules.xml文件,而validation.xml文件可以从struts-1.2.9-bin/webapps/struts-examples.war/WEB-INF/validator文件夹中找到。注意,struts-examples.war可以用winzip或者winrar解压或者打开,还有,validation.xml文件本意是需要我们自己创建的,所以不从例子包中找很难找到。
2.配置
将validation.xml,validator-rules.xml两个文件拷贝到项目中的WEB-INF文件夹下,在struts-config.xml文件中加入:
<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>的上面,这样才符合dtd。
3.代码
这里提供一个小例子。
首先,建立一个frombean。注意,如果使用validator框架进行验证,所使用的frombean就不能够用ActionForm了,而要使用ValidatorForm,动态frombean也是一样,使用DynaValidatorForm.
frombean代码如下(格式不好请谅解,拷贝到eclipse后请使用ctrl+shift+f重新格式化代码):
************************************************************************
import org.apache.struts.validator.ValidatorForm;
/**
* MyEclipse Struts
* Creation date: 10-09-2007
*
* XDoclet definition:
* @struts.form name="testValidatorForm"
*/
public class TestValidatorForm extends ValidatorForm {
/*
* Generated Methods
*/
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
************************************************************************
b.创建action
我们的目的是配置好validator框架进行表单验证,所以action中不需要任何逻辑。
以下是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 cn.hxex.sample.struts.form.TestValidatorForm;
/**
* MyEclipse Struts
* Creation date: 10-09-2007
*
* XDoclet definition:
* @struts.action path="/v1" name="testValidatorForm" scope="request" validate="true"
*/
public class V1Action 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) {
TestValidatorForm testValidatorForm = (TestValidatorForm) form;// TODO Auto-generated method stub
return null;
}
}
************************************************************************
c.建立jsp文件
不多说了,越简单越好,记得加入<html:errors />,代码如下:
************************************************************************
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
<html>
<head>
<title>JSP for UserForm form</title>
</head>
<body>
<html:form action="/v1">
<html:errors /><br/>
userName : <html:text property="userName"/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
</html>
************************************************************************
表单中只有一个提交项:userName
d.配置struts-config.xml
d.1配置frombean:
<form-bean name="testValidatorForm" type="cn.hxex.sample.struts.form.TestValidatorForm" />
d.2配置action,记得将validate配置为"true"
<action
name="testValidatorForm"
path="/v1"
input="/testV1.jsp"
scope="request"
type="cn.hxex.sample.struts.action.V1Action"
validate="true"
/>
e.修改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="testValidatorForm">
<field property="userName" depends="required">
<arg0 key="testValidatorForm.userName"/>
</field>
</form>
</formset>
</form-validation>
其中的required是指不能为空,验证项还有很多,留为后话。
f.配置ApplicationResources.properties文件内容如下:
testValidatorForm.userName=用户名
errors.required={0}不能为空!
红色的testValidatorForm.userName和validation.xml中arg0的key值一致,下面的errors.required和validation.xml文件中的depends中的required保持一致,表示判空。如果为空,就会报errors.required等号后面的错误信息,其中的{0}表示validation.xml中的arg0,依此类推,以后的{1}表示validation.xml文件中的arg1.本例完整的错误信息是:用户名不能为空!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: