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

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_1
error.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>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值