Struts:validator验证框架详解(一)

来源:互联网 发布:软件的可靠性设计 编辑:程序博客网 时间:2024/04/29 12:14

StrutsValidator验证框架详解

 

    我使用的是eclipse3.2myeclipse5.5,服务器为Tomcat5.5struts版本使用的是1.1。不废话。下面我们进入正题。

 

一、首先,演示一个最简单的Validator使用实例。(我这里只写出了重要代码和有变动的地方)

 

先看一下我的jsp文件login.jsp

<html:errors/>

<html:form action="/login">

name : <html:text property="name"/><html:errors property="name"/><br/>

password : <html:text property="password"/><html:errors property="password"/><br/>

<html:submit/><html:cancel/>

</html:form>

这里使用了struts标签,<html:errors/>用来显示验证出错时的信息。

我为上面的form表单建立了一个Form类,要使用验证框架,所以需要个类继承org.apache.struts.validator.ValidatorForm。代码如下:

public class LoginForm extends ValidatorForm {

    private String password;

    private String name;

    public String getPassword() {

        return password;

    }

    public void setPassword(String password) {

        this.password = password;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

}

我们要使用到两个XML文件:一个是validatorv-rules.xml,从文件名就可以看出,里面定义了各种验证规则,例如:required-输入不能为空、minlength-输入字符串的最小长度、email-电子邮件地址等等。这个文件可以在下载的struts的包中找到;第二个是validation.xml在这个文件中,我们针对自己的表单选择自己想使用的验证规则。

<?xml version="1.0" encoding="UTF-8"?>

<!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>

<formset>

  <form name="loginForm">

<field property="name" depends="required">

</field>

    <field property="password" depends="required">

    </field>

  </form>

</formset>

</form-validation>

这里我定义了一个对表单的验证。表单的名字是loginForm<field>代表了需要验证表单对象的属性,这里要验证两个:namepassword,分别对应了我们在LoginForm类中定义的两个属性。(当然我们也可以只验证其中一个)

<field>标签中,我们需要定义两个标签属性:propertydependsproperty的值对应的是表单属性的变量名,depends的值是我要对这个表单属性使用的验证规则,现在只用一个required规则,它表示不能为空。

我们再定义一个资源文件ApplicationResources.properties,里面是键值对的形式,内容如下:

# Resources for parameter 'com.yourcompany.struts.ApplicationResources'

# Project practiceStruts

 

errors.required = {0} is required;

 

最后,我的struts-config.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<struts-config>

  <data-sources />

  <form-beans >

    <form-bean name="loginForm" type="com.yourcompany.struts.form.LoginForm" />

  </form-beans>

  <global-exceptions />

  <global-forwards />

  <action-mappings >

    <action

      attribute="loginForm"

      input="/login.jsp"

      name="loginForm"     

      path="/login"

      scope="request"

      validate="true"

      type="com.yourcompany.struts.action.LoginAction">

      <forward name="success" path="/success.jsp" />

      <forward name="fail" path="/login.jsp" />

    </action>

  </action-mappings>

  <message-resources parameter="com.yourcompany.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>

这里我们要注意几个地方,一个是我们的资源文件配置标签<message-resources> ,用parameter标签属性来指定我们的配置文件,com.yourcompany.struts是资源文件所在的class包,ApplicationResources是资源文件的文件名。第二个要注意的地方是<plug-in>标签,我们用它来启用验证框架,className的值是官方提供的验证插件类,<set-property>里面指定了验证规则文件和我们自己写的验证文件,用逗号分开。还有一个要注意的地方是当一个form表单对应多个action的时候,我们需要定义<action>标签的attribute属性,这个属性的值就是将ActionForm对象保存到用户请求或者会话上下文是所使用的属性,我们可以在页面中通过这个值去的form表单对象的实例。

好的,到此位置,我们就配置好了一个最简单的验证框架。然后就可以部署到服务器中运行了。

    运行前面的jsp页面,可以的到下面的页面:

其中最上面是<html:errors/>显示的内容

而两个文本框后面是<html:errors property=”” />显示的内容,property的值与validation.xml文件中<file property=的内容相对应>

 
原创粉丝点击