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

来源:互联网 发布:弱视软件 编辑:程序博客网 时间:2024/05/21 17:35

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.本例完整的错误信息是:用户名不能为空!

原创粉丝点击