使用Struts提供的Validator框架进行验证(lp)

本文介绍如何在Struts项目中集成Validator框架,包括添加Struts应用、启用Validator插件、创建FormBean、配置validation.xml及ApplicationResources.properties等步骤。同时,介绍了如何实现客户端验证。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

 
Validator支持服务器端和客户端(JavaScript)的验证。使用Validator框架的步骤为:
 
一、添加struts 应用。
       “Add web project Capabilitily” →“Add Struts Capabilitily”在我们为工程“Add Struts Capabilitily”时会自动生成validator-rules.xml,ApplicationResources.properties两文件。
 
二、启用Validator插件
虽然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为你的应用程序加载并初始化Validator插件。在初始化时,该插件装入由路径名属性指定的、用逗号分隔的Validator配置文件清单。每个配置文件的路径应该用与Web应用程序的相关的路径来指定,
 
 
三、创建Form Bean
为了使用Validator,你的应用程序的Form Bean必须归到Validator的ActionForm的某一子类,而不是ActionForm本身。Validator的ActionForm子类提供了ActionForm的validate( )方法(它嵌入到Validator框架中)的实施过程。你不必从头编写验证代码并把它投入validate( )方法中,相反,可以完全忽略该方法,因为Validator为你提供了验证代码。
public class UserBean extends ValidatorForm {……}
注意:继承的时候应选择org.apache.struts.validator.ValidatorForm
 
四、struts-config.xml中增加验证功能。
Struts-config.xml
<form-beans>
       <form-bean name="userBean" type="com.lipeng.bean.UserBean" />
</form-beans>
 
<action
      attribute="userBean"
      input="/login.jsp" validate="true"
      name="userBean" path="/login" scope="request"
      type="com.lipeng.action.LoginAction">
      <forward name="ok" path="/loginok.jsp" />
      <forward name="fail" path="/loginfail.jsp" />
   </action>
 
五、配置validation.xml
validation.xml确定哪个验证例行程序应用到哪个Form Bean。文件中的定义使用struts-config.xml文件给出的Form Bean的逻辑名称以及validator-rules.xml文件给出的验证例行程序的逻辑名称,以便把二者关联起来。
       <form name="userBean">
           <field property="username" depends="required">
              <arg0 key="personal.key1" ></arg0>
           </field>
    </form>
 
附:这里的required是validator-rules.xml中定义的:
    Arg0required中msg 中的参数,即代替errors.required 中的{0}
 
六、配置ApplicationResources.properties
Validator使用Struts的资源绑定(Resource Bundle)机制将错误消息具体化。不用在框架中对错误消息进行硬编码,Validator使你能在ApplicationResources.properties文件中为一个消息指定一个键值,如果验证失败则将返回该键值。validator-rules.xml文件中的每个验证例行程序都用validator-rules.xml中的validator标记的msg属性指定错误消息的键值,如下所示:
<validator name="required"
            classname="org.apache.struts.validator.FieldChecks"
             ……
                  msg="errors.required"/>
ApplicationResources.properties文件:
errors.required={0}isrequired.
errors.minlength={0}cannotbelessthan{1}characters.
errors.maxlength={0}cannotbegreaterthan{2}characters.
errors.invalid={0}isinvalid.
errors.byte={0}mustbeabyte.
errors.short={0}mustbeanshort.
errors.integer={0}mustbeaninteger.
errors.long={0}mustbeanlong.
errors.float={0}mustbeanfloat.
errors.double={0}mustbeandouble.
errors.date={0}isnotadate.
errors.range={0}isnotintherange{1}through{2}.
errors.creditcard={0}isnotavalidcreditcardnumber.
errors.email={0}isaninvalide-mailaddress.
 
personal.key1=username
 
 
七、启用客户端验证
Validator除了提供了简化服务器端表单数据验证过程的框架外,它还提供了执行客户端验证时易于使用的方法。在validator-rules.xml文件中定义的每一个验证例行程序都可以随意指定JavaScript代码,这些代码可以在浏览器(客户端上的)中运行,从而执行与服务器端进行的验证相同的验证过程。在客户端进行验证时,除非所有表单都通过验证,否则这些表单不允许被提交。
 
要启动客户端验证,你必须在相应的JSP文件中做如下设置:
1. 为<html:form>增加onsubmit属性 
<html:form action="/login" method="post" onsubmit="return validateUSserBean(this);">
2. 设置Javascript支持 
javascript标记要求使用formName属性来为想要对其执行验证的表单指定validation.xml文件中给出的表单定义名,如下所示:
  <html:javascript formName="userBean"   dynamicJavascript
="true"    staticJavascript="true"/>
 
 
附:login.jsp
   <body>
 <html:errors/> //输出验证失败的信息
    <html:javascript formName="userBean"/>
<html:form action="/login" method="post" onsubmit="return validateUSserBean(this);">
      <table border="0">
        <tr>Username: <html:text property="username" /></tr>
        <tr>Password: <html:password property="password" /></tr>
        <tr><html:submit /></tr>
      </table>
    </html:form>
</body>
 
为表单定义指定的服务器端的所有验证都将在客户端运行。由于客户端验证用JavaScript执行,所以可以有多种方法不去执行它。要确保验证过程总是能运行,不论你是否选择启用了客户端验证,Validator都在服务器端执行这些验证。此时,Struts将根据xml配置文件中的定义来检验表单输入,并将不符合要求的错误信息输出到页面。但是你可能会想:这个功能虽然好,可是什么检验都跑到服务器端执行,效率方面和用户易用性方面是不是有些问题?你可能会怀念起那简单的JavaScript客户端验证。不用担心,在Struts 1.1中也支持JavaScript客户端验证。如果你选择了客户端验证,当某个表单被提交以后,Struts 1.1启动客户端验证,如果浏览器不支持JavaScript验证,则服务器端验证被启动,这种双重验证机制能够最大限度地满足各种开发者的需要。JavaScript验证代码也是在validator-rules.xml文件中定义的。

 

                                                 

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值