关于struts动态form表单验证

struts动态form表单验证

    struts表单验证有两种。一种通过ActionFrom中的validate方法进行验证,这中验证是在后台java代码中进行验证。另一种是通过DynaValidatorForm进行验证,这种验证比较麻烦,属于struts高级特性。我们在这里主要介绍第二种方法。

     我们从页面到后台的编程步骤讲起。首先是页面。页面上一定要注意:要导入标签库html,并且要用到<html:errors/>属性,因为我们的验证出错信息显示是通过该标签的。具体代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
   
    <title>迅腾国际滨州校区</title>
  </head>
 
  <body>
  <html:errors/>
    <form  action="login.do?method=login" method="post">
    <input type="text" name="name"  ><br>
    <input type="password" name="password"><br>
    <input type="submit" value="提交">
    </form>
  </body>
</html>

 

 

   配置好页面,我们去看strtus-config.xml文件,首先我们创建一个动态验证form,如下:

<form-beans >
    <form-bean name="loginForm" dynamic="true" type="org.apache.struts.validator.DynaValidatorForm">
    <form-property name="name" type="java.lang.String"></form-property>
    <form-property name="password" type="java.lang.String"></form-property>
    </form-bean>
  </form-beans>

其中,loginForm是指表单的名字,需要和下面action中name的值一样。dynamic="true" 是表明这里用的是动态ActionForm.类型必须是org.apache.struts.validator.DynaValidatorForm。name和password必须和页面表单中的控件名称一致。

 

然后是action配置。如下:

<action
      attribute="loginForm"
      input="/index.jsp"
      name="loginForm"
      parameter="method"
      path="/login"
      validate="true"
      scope="request"
      type="com.xt.struts.action.LoginAction">
      <forward name="index" path="/index.jsp" />
    </action>
这里必须设置validate验证为true。

 

需要加入插件。虽然Validator框架是与Struts封装在一起提供的,但在默认状况下Validator并不被启用。为了启用Validator,要向你的应用程序的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文件中所有的标签都是有顺序的,<plug-in />标签需要放在最下面,也就是

<message-resources parameter="com.xt.struts.ApplicationResources" />的下面。

 

再注意到这两个文件。validator-rules.xml是系统提供给我们的,我们不用关心。但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">
        <arg0 key="prompt.name"/>

      </field>
      <field property="password"
            depends="required">
        <arg0 key="prompt.password"/>
      </field>
    </form>
  </formset>
</form-validation>

Validator使用该表单标记的name属性的值将验证定义与要应用这些定义的Form Bean的名称相匹配

下面我们看一下ApplicationResource.properties文件。每个消息的键值对应于每个由validator-rules.xml文件中的验证例行程序所指定的消息,它们由Struts示例应用程序提供。


# Error messages for Validator framework validations

prompt.name=name
prompt.password=password

errors.required={0} is required.
errors.minlength={0} cannot be less than {1} characters.
errors.maxlength={0} cannot be greater than {2} 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.0.   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 not a valid credit card number.
errors.email={0} is an invalid e-mail address.


请注意,每条消息都有占位符,形式为{0}、{1}或{2}。在运行期间,占位符被另一个值代替,如所验证的域的名称。这一特性特别有用,它使你能够创建可被几个不同的域重复使用的通用验证错误消息。


 prompt.name 和 validation.xml中的 <arg0 key="prompt.password"/>一致。

这样一个简单的验证就通过了。

阅读更多
想对作者说点什么? 我来说一句

关于struts表单验证

2011年07月06日 60KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭