zoukankan      html  css  js  c++  java
  • 基于XML配置方式实现对action的所有方法进行校验

    基于XML配置方式实现
    对action的所有方法进行校验或者对Action的指定方法进行校验
    Action也要继承ActionSupport,并且提供校验文件,校验文件和action类放在同一个包下
    文件的取名格式为:ActionClassName-validation.xml,其中ActionClassName为action的简单类名,-validation为固定
    写法.如果Action类为cn.itcast.UasrAction那么该文件的取名格式为UserAction-validation.xml
    配置文件的模板从struts-2.1.6文件下的apps下解压个例子在WEB-INF下的classes下example下Login-validation.xml

    <validators>
    <field name="username"> ----属性
    <field-validator type="requiredstring"> 这个校验器有系统提供 可在xwork-2.x.jar中的com.opensymphony.xwork2.validator.validators
    下的default.xml找到
    <param name="trim">true</param>作用去掉字符串的前后空格
    <message>用户不能为空</message>校验失败后的提示信息
    </field-validator>
    </field>


     <field name="mobile">
         <field-validator type="requiredstring">
                  <message>手机号不能为空</message>
         </field-validator>
         <field-validator type="regex">
               <param name=" expression"><![CDATA[^1[358]\d{9}$]]</param>
               <message>手机格式不正确</message>
         </field-validator>
     </field>
    </validators>

    同样也要提供input视图
    <s:fielderror/>以及校验失败显示错误信息的标签


    总结:
    第一步在Action的同一个包下放入校验文件

    第二步在配置文件中编写对那些字段进行校验 使用对应的校验器
    在struts.xml配置文件中提供一个名为input视图如:<result name="input">/index.jsp</result>

    通过<s:fielderror/>把校验失败信息打印在页面上


    -=================
    编写校验文件时,不能出现帮助信息如何解决?
    在编写ActionClassName-validation.xml校验文件时,如果出现不了帮助信息,可以按下面方式解决
    windows-> perferences--> myeclipse -->files and editors-> xml--> xmlcatalog 点add在出现的窗口中的location中选"File system"然后再xwork-2.1.2解压
    目录的src\java目录中选择xwork-validator-1.0.3.dtd回到设置窗口的时候,不要急着关闭窗口,应把窗口中的Key Type改为URL
    Key改为http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd

    ===================================================================================================

    如何基于XML对Action中指定的方法进行校验
    当校验文件取名为ActionClassName-validation.xml会对action中的所以处理方法实施输入验证
    如果你只需要对action中的某个action方法实施校验,那么校验文件的取名应该为:ActionClassName-ActionName-validation.xml
    其中ActionName为struts.xml中action的名称.例如:在实际应用中,常有以下设置:
    <package name="" namespace="/person" >
    <action name="user_*" class="cn.itcast.action.UserAction" method="{1}" > 通配符来决定执行的方法
       <result name="success">/WEB-INF/page/message.jsp</result>
       <result name="input">/WEB-INF/page/addUser.jsp</result>
    </action>
    </package>
    UserAction中有以下两个处理方法:
    public String add() throws Exception{
    }

    public String update() throws Exception{

    }

    那么执行的路径:/person/user_add.action
                   /person/user_update.action

    namespace= /person
    ActionName=user_add
    而我们的校验文件的名称
    UserAction[ActionClass的名称]-user_add[ActionName]-validation.xml


    ========================总结
    基于XML校验的一些特点
    当为某个action提供了ActionClassName-Validation.xml和ActionClassName-ActionName-Validation.xml
    系统寻找到第一个校验文件时还会继续搜索后面的校验文件,当搜索到所有校验文件时,会把校验文件里的所有
    校验规则汇总,然后全部应用于action方法的校验,如两个校验文件指定的校验规则冲突,则只使用后面文件的校验规则

    当action继承了另一个action,父类action的校验文件会先被搜索到。

  • 相关阅读:
    Dynamics CRM 请求服务时报access is denied错误
    (转载)表服务器无法打开与报表服务器数据库的连接。所有请求和处理都要求与数据库建立连接。
    如何将sqlserver的windows验证模式改为SQL Server 和 Windows 混合身份验证模式
    (转载)SQL Server2008附加数据库之后显示为只读时解决方法
    CRM导入组织报实例名称必须与计算机名称相同的问题
    The ENU localization is not supported by this SQL Server media
    js验证input输入框(字母,数字,符号,中文)
    Microsoft Dynamics CRM 2011 JS操作集锦
    一入python深似海--class
    TLB的作用及工作过程
  • 原文地址:https://www.cnblogs.com/wuhuisheng/p/2101470.html
Copyright © 2011-2022 走看看