struts-Validate框架(验证动态ActionForm)

来源:互联网 发布:用数据讲故事 pdf 编辑:程序博客网 时间:2024/05/29 15:34

jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>My JSP 'reg.jsp' starting page</title>  </head>    <body>  <html:form action="/reg">姓名:<html:text property="cname"/><html:errors property="cname"/><br>email:<html:text property="email"/><html:errors property="email"/><br>电话:<html:text property="phone"/><html:errors property="phone"/><br>年龄:<html:text property="age"/><html:errors property="age"/><br>   <html:submit/><html:cancel/><br>  </html:form>  </body></html>

web.xml的配置:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"><struts-config>  <form-beans >  <!-- 定义动态ActionForm -->    <form-bean name="regForm" type="org.apache.struts.validator.DynaValidatorForm">      <form-property name="cname" type="java.lang.String" />      <form-property name="email" type="java.lang.String" />      <form-property name="phone" type="java.lang.String" />      <form-property name="age" type="java.lang.String"/>    </form-bean>  </form-beans>  <global-exceptions />  <global-forwards />  <action-mappings >    <action      attribute="regForm"      input="/reg.jsp"      name="regForm"      path="/reg"      scope="request"      type="com.yourcompany.struts.action.RegAction"      cancellable="true" />  </action-mappings>  <message-resources parameter="com.yourcompany.struts.ApplicationResources" /><!-- 以插件的形式,来注册框架中的验证文件 --> <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" property="pathnames"/> </plug-in></struts-config>

资源文件信息:

# Resources for parameter 'com.yourcompany.struts.ApplicationResources'# Project Prj9_1error.null={0} cannot be null;error.email=email is not correct!error.number={0} must be a number!error.int={0} must be a int!error.minlength=minlength of {0} is {1}error.maxlength=maxlength of {0} is {1}error.range={0}must between {1} and {2}

validation.xml:

<!DOCTYPE form-validation PUBLIC        "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"        "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd"><form-validation><!-- 在这里写验证 --><formset><!-- 写表单验证,可以写多个 --><form name="regForm"><!-- 验证某个表单,name是ActionForm的名字 --><!-- 验证属性 --><field property="cname" depends="required"><msg name="required" key="error.null"/><!-- key:消息key --><arg name="required" key="cname" resource="false"/><!-- key:参数值 --></field><field property="email" depends="email,required"><msg name="required" key="error.null"/><arg name="required" key="email" resource="false"/> <!-- key:参数值 --><msg name="email" key="error.email"/></field><field property="phone" depends="required,long,minlength,maxlength"><msg name="required" key="error.null"/><arg name="required" key="phone" resource="false"/> <!-- key:参数值 --><msg name="long" key="error.number"/><arg key="phone" name="long" resource="false"/><msg name="minlength" key="error.minlength"/> <arg key="phone" name="minlength" resource="false"/> <arg key="${var:minlength}" name="minlength" resource="false"/> <var><!-- 设定门限 --><var-name>minlength</var-name><!-- name是规定的 --><var-value>7</var-value></var><msg name="maxlength" key="error.maxlength"/><arg key="phone" name="maxlength" resource="false"/><arg key="${var:maxlength}" name="maxlength" resource="false"/><var><!-- 设定门限 --><var-name>maxlength</var-name><!-- name是规定的 --><var-value>10</var-value></var></field><field property="age" depends="required,integer,intRange"><msg name="required" key="error.null"/><arg key="required" name="required" resource="false"/><msg name="integer" key="error.int"/><arg key="age" name="integer" resource="false"/><msg name="intRange" key="error.range"/><arg key="age" name="intRange" resource="false"/><arg key="${var:min}" name="intRange" resource="false"/><arg key="${var:max}" name="intRange" resource="false"/><var><!-- 设置门限:规定,设定max,min就可以了 --><var-name>min</var-name><var-value>0</var-value></var><var><var-name>max</var-name><var-value>100</var-value></var></field></form></formset></form-validation>
validator-rules.xml:
<!--    Licensed to the Apache Software Foundation (ASF) under one or more    contributor license agreements.  See the NOTICE file distributed with    this work for additional information regarding copyright ownership.    The ASF licenses this file to You under the Apache License, Version 2.0    (the "License"); you may not use this file except in compliance with    the License.  You may obtain a copy of the License at            http://www.apache.org/licenses/LICENSE-2.0       Unless required by applicable law or agreed to in writing, software    distributed under the License is distributed on an "AS IS" BASIS,    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.    See the License for the specific language governing permissions and    limitations under the License.--><!DOCTYPE form-validation PUBLIC        "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"        "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd"><!--  $Id: validator-rules.xml 481833 2006-12-03 17:32:52Z niallp $   This file contains the default Struts Validator pluggable validator   definitions.  It is contained in struts-core.jar, and should be    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="/org/apache/struts/validator/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.   Note: Starting in Struts 1.2.0 the default javascript definitions have         been consolidated to commons-validator. The default can be overridden         by supplying a <javascript> element with a CDATA section, just as         in struts 1.1.--><form-validation>    <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.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   msg="errors.required"/>        <validator name="requiredif"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateRequiredIf"                   methodParams="java.lang.Object,                               org.apache.commons.validator.ValidatorAction,                               org.apache.commons.validator.Field,                               org.apache.struts.action.ActionMessages,                               org.apache.commons.validator.Validator,                               javax.servlet.http.HttpServletRequest"                   msg="errors.required"/>        <validator name="validwhen"                   msg="errors.required"                   classname="org.apache.struts.validator.validwhen.ValidWhen"                   method="validateValidWhen"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"/>        <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.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.minlength"                   jsFunction="org.apache.commons.validator.javascript.validateMinLength"/>        <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.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.maxlength"                   jsFunction="org.apache.commons.validator.javascript.validateMaxLength"/>        <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.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.invalid"/>        <validator name="byte"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateByte"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.byte"                   jsFunctionName="ByteValidations"/>        <validator name="short"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateShort"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.short"                   jsFunctionName="ShortValidations"/>        <validator name="integer"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateInteger"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.integer"                   jsFunctionName="IntegerValidations"/>        <validator name="long"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateLong"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.long"/>        <validator name="float"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateFloat"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.float"                   jsFunctionName="FloatValidations"/>        <validator name="double"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateDouble"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.double"/>        <validator name="byteLocale"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateByteLocale"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.byte"/>        <validator name="shortLocale"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateShortLocale"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.short"/>        <validator name="integerLocale"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateIntegerLocale"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.integer"/>        <validator name="longLocale"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateLongLocale"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.long"/>        <validator name="floatLocale"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateFloatLocale"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.float"/>        <validator name="doubleLocale"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateDoubleLocale"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.double"/>        <validator name="date"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateDate"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.date"                   jsFunctionName="DateValidations"/>        <validator name="intRange"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateIntRange"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends="integer"                   msg="errors.range"/>        <validator name="longRange"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateLongRange"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends="long"                   msg="errors.range"/>        <validator name="floatRange"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateFloatRange"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends="float"                   msg="errors.range"/>        <validator name="doubleRange"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateDoubleRange"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends="double"                   msg="errors.range"/>        <validator name="creditCard"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateCreditCard"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.creditcard"/>        <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.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.email"/>        <validator name="url"                   classname="org.apache.struts.validator.FieldChecks"                   method="validateUrl"                   methodParams="java.lang.Object,                       org.apache.commons.validator.ValidatorAction,                       org.apache.commons.validator.Field,                       org.apache.struts.action.ActionMessages,                       org.apache.commons.validator.Validator,                       javax.servlet.http.HttpServletRequest"                   depends=""                   msg="errors.url"/>        <!--          This simply allows struts to include the validateUtilities into a page, it should          not be used as a validation rule.        -->        <validator name="includeJavaScriptUtilities"                   classname=""                   method=""                   methodParams=""                   depends=""                   msg=""                   jsFunction="org.apache.commons.validator.javascript.validateUtilities"/>    </global></form-validation>