struts表单验证 配置和使用

简要描述

Struts采用Validator框架(Validator框架现在是Jakarta Commons项目的一部分)来解决校验问题,它将校验规则代码集中到外部的且对具体的应用程序中立的.xml文件中,这样,就将那些到处出现的校验逻辑从应用程序中分离出来,任何一个Struts应用都可以使用这个文件,同时还为校验规则的扩展提供了便利。更难能可贵的是由于Validator框架将校验中要用到的一些消息等信息与资源绑定有机结合在一起,使得校验部分的国际化编程变得十分的便捷和自然。

主要构成

Validator框架大致有如下几个主要组件:

  • 校验类:
    是Validator框架调用的一些Java类,它处理那些基本的通用的校验,包括required、mask(匹配正则表达式)、最小长度、最大长度、范围、日期等。校验类可以根据需要扩展。
  • 配置文件:
    主要包括两个配置文件,一个是validator-rules.xml,主要包含一些通用的校验规则,另一个是validation.xml,包含需要校验的一些form及其组件的集合。
  • 资源绑定:
    提供国际化标签和消息,缺省使用struts的资源绑定。即校验所用到的一些标签与消息都写在ApplicationResources.properities文件中。
  • Jsp 标签:
    为给定的form或者action path生成前端校验的 JavaScript 代码。
  • ValidatorForm:
    是ActionForm的一个子类。

校验框架的使用

1) 配置
struts2下的配置 主流
通常要对哪个Action验证就需要给出相应的
<Action类名>-validation.xml文件,
例如,如果要对UserAction进行验证就需要UserAction-validation.xml文件配置。
注意:该文件应该保存在与Action class文件相同的路径下

如果要对同一个UserAction的不同方法reg()与login()分别进行验证,如何做呢?
这时需要给出二个不同的验证文件:命名规则如下:
 UserAction-reg-validation.xml和UserAction-login-validation.xml
但是请注意UserAction-reg-validation.xml和UserAction-login-validation.xml中的reg与login不是指的reg()和login()的方法名,
而是指在struts.xml中配置的action配置的name属性的名字。
校验文件的校验顺序
如果同时存在UserAction-validation.xml和UserAction-login-validation.xml,那么在名为login的Action中哪个校验文件会起作用呢?
      -- 这两个文件都将起作用,且执行顺序是
                1) UserAction-validation.xml
        2) UserAction-login-validation.xml

struts1下的配置
在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-rules.xml 和 validation.xml ,放到目录 /WEB-INF 下面

2) 校验定义

validstruts2框架下的配置ation.xml 文件中定义校验的表单和属性。

例子:

    <form  name="customerForm">
             <field  property="name"  depends="required">
                 <arg0  key="customerForm.name"/>
             </field>
              <field  property="address"  depends="required">
                 <arg0  key="customerForm.address"/>
             </field>
         </form>

其中,表单名称customerForm必须在struts-config.xml中定义。

property为表单的属性。

depends为校验规则的名称。validator_rules.xml中缺省定义的校验规则请参考struts的文档。

<arg0  key="customerForm.name"/>指定校验规则中使用的消息在消息资源文件中的key值

3) 表单类继承

为了使服务器边的验证能够进行,将用到的formBean从ActionForm的子类改为ValidatorForm的子类,如:

public class BaseForm extends ValidatorForm implements Serializable

4) 客户端校验

要实现客户端校验,必须在提交的时候运行校验框架生成的javascript代码。

在<html:form>标签中,添加属性 οnsubmit="return validateCustomerForm(this)"

在标签后加上:

<html:javascript formName="customerForm"  cdata="false"
       
dynamicJavascript="true" staticJavascript="false"/>
<
script type="text/javascript"
       
src="<c:url  value="/scripts/validator.jsp"/>"></script>

5) Action指定校验

在action的配置中加上指定校验的属性:validate="true",如:

  <action  path="/customer/customer"  
                
type="com.demo.order.actions.CustomerAction"  
                
name="customerForm"  
                
parameter="method"  
                
input="add"
                unknown="false"
                
validate ="true"
                >
            <forward  name="view"  path="model.customer.view">
            </forward>
            <forward  name="add"  path="model.customer.add">
            </forward>
            <forward  name="list"  path="model.customer.list">
            </forward>

        </action>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值