Validator框架中的ValidatorForm和DynaValidatorForm使用区别

我在使用DynaValidatorForm和ValidatorForm时出现问题

 使用动态的form(DynaValidator)时,没用什么特别的,先说说使用它的具体例子:

此例子只有一个name属性的requiredt验证,

1. 先建立动态的Form:

    在Struts的配置文件中关于动态Form的配置

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

2.建立一个Action,只有跳转的功能:

 在struts配置文件中关于Action的配置:

  <action attribute="valiForm" input="/vali.jsp" name="valiForm"
   path="/vali" scope="request"
   type="com.zyl.struts.action.ValiAction">
   <forward name="success" path="/welcome.jsp" />
  </action>

在ValiAction的execute()方法中:

  return mapping.findForward("success");

3 .在struts配置文件中添加对Validator插件的声明:

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
  <set-property property="pathnames"
   value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
 </plug-in>

4 validation.xml验证规则:全部代码如下

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

 <!--
  This is a minimal Validator form file with a couple of examples.
 -->

 <global/>

 <formset>

  <!-- An example form -->
  <form name="valiForm">
   <field property="name" depends="required">
    <arg key="lable.name" />
   </field>
  </form>
 </formset>
</form-validation>

5. 资源文件的内容

# Resources for parameter 'com.yourcompany.struts.ApplicationResources'
 name=Name
# Project StrutsValidate1
   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.

6  vali.jsp

<%@ 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 DynaValidatorForm form</title>
 </head>
 <body>
  <html:form action="/vali">
   name : <html:text property="name" />
   <html:errors property="name" />
   <br />
   <html:submit />
   <html:cancel />
  </html:form>
 </body>
</html>

7. welcome.jsp

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<html>
 <head>
   <title>My JSP '/welcome.jsp' starting page</title>

   </head>

 <body>
  welcome you!
 </body>
</html>

测试成功没有问题,但再建一个工程使用ValidatorForm时,就不经过验证就跳转了(其他配置不变)。可见两种form的使用是不一样的,同学给了个例子,实现前台生成javaScript代码验证,配置只有Form的类型和第一部分的配置不一样,其他都相同,还有就是把vali.jsp改为:

<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ 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  ValiForm form</title>
 </head>
 <body>
  <html:javascript formName="valiForm" staticJavascript="true"
   dynamicJavascript="true" />
  <html:form action="/vali" method="post" focus="name"
   οnsubmit="return validateValiForm(this);">
   name : <html:text property="name" />
   <html:errors property="name" />
   <br />
   <html:submit />
   <html:cancel />
  </html:form>
 </body>
</html>

还有把Struts配置文件中的Action中 validate="false"

测试就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值