`

struts2输入校验小结

 
阅读更多

strut2对输入校验小结:
1、首先执行类型转换。
2、执行校验框架转换
3、执行特定方法对应的validate验证(test,validateTest)
4、执行validate()方法

如果以上所有过程出现了任何错误,都不会继续执行,页面将转向struts.xml中input这个result对应的页面。

以下内容为struts2中xwork对输入校验的解析。

定义校验文件,校验文件命名为对应的Actionname-validate.xml。
    内容可如下进行校验:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
"-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
"http://www.opensymphony.com/xwork/xwork-validator1.0.2.dtd"> 
<validators> 
<field name="username"> 
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>username invalid </message>
</field-validator>

<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>username should be between ${minLength}and${maxLength} </message>
</field-validator> 
</field>

<field name="age">
<field-validator type="required">
<param name="trim">true</param>
<message>age required </message>
</field-validator>
<field-validator type="int">
<param name="max">150</param>
<param name="min">1</param>
<message>age should be between ${min} and ${max} </message>
</field-validator> 
</field>

<field name="birthday">
<field-validator type="required">
<message>birthday requried</message>
</field-validator>
<field-validator type="date">
<param name="min">2000-01-01</param>
<param name="max">2003-12-31</param>
<message>birthday should be between ${min} and ${max}</message>
</field-validator>
</field> 
</validators>


    代码说明:
为什么type类型会是required等呢?
这是因为type类型定义在xwork包里有个default.xml
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
        "-//OpenSymphony Group//XWork Validator Config 1.0//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">
<!-- START SNIPPET: validators-default -->
<validators>
    <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
    <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
    <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
    <validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
    <validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
    <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
    <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
    <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
    <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
    <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
    <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
    <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
    <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
    <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
    <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
    <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>
</validators>
<!--  END SNIPPET: validators-default -->
通过阅读default.xml源码我们还可以进一步去查看后面映射的方法,了解其中的参数应用,因为这一切都不是凭空想象!

分享到:
评论

相关推荐

    Struts2输入校验总结

    ### Struts2输入校验深度解析 #### 一、手动输入完成校验 在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中...

    struts2+ajax 无刷新验证身份证号是否已注册,身份证号是否正确

    #### 四、小结 通过上述步骤,我们可以实现一个基于Struts2和AJAX技术的身份证号验证系统。该系统不仅能够有效地减少服务器压力,还能显著提升用户体验。在实际开发中,还需要根据具体的业务需求进行调整和完善。...

    Java Web程序设计教程

    6.3.3应用struts2输入校验框架 128 6.3.4自定义校验器 130 6.4国际化 131 6.4.1国际化实现原理 131 6.4.2准备国际化资源文件 131 6.4.3调用国际化资源文件 134 6.5上传和下载 135 6.5.1文件上传的实现原理 ...

    java web技术开发大全(最全最新)

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring...

    java web开发技术大全

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring...

    ssh的一个整合的实例

    #### 小结 本实验通过具体实例详细介绍了SSH框架的整合过程。通过以上步骤的学习,不仅能够帮助开发者掌握各个框架的基本使用方法,还能够深入了解不同框架之间的协作机制,从而更好地应用于实际项目开发中。

    Spring攻略(第二版 中文高清版).part2

    1.15 小结 56 第2章 高级Spring IoC容器 57 2.1 调用静态工厂方法创建Bean 57 2.1.1 问题 57 2.1.2 解决方案 57 2.1.3 工作原理 57 2.2 调用一个实例工厂方法创建Bean 58 2.2.1 问题 58 2.2.2 ...

    Spring攻略(第二版 中文高清版).part1

    1.15 小结 56 第2章 高级Spring IoC容器 57 2.1 调用静态工厂方法创建Bean 57 2.1.1 问题 57 2.1.2 解决方案 57 2.1.3 工作原理 57 2.2 调用一个实例工厂方法创建Bean 58 2.2.1 问题 58 2.2.2 ...

    短信接口,实现手机绑定

    ### 六、小结 通过上述介绍,我们了解了如何在Java项目中使用短信接口实现手机绑定功能。这不仅涉及到技术层面的问题,还需要考虑到用户体验和安全性等方面。希望本文能够帮助读者更好地理解和掌握这一知识点。

    Spring-Reference_zh_CN(Spring中文参考手册)

    14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.6.2.1. 文档视图定义 14.6.2.2. Controller 代码 14.6.2.3. Excel视图子类 14.6.2.4. PDF视图子类 14.7. JasperReports 14.7.1. 依赖...

Global site tag (gtag.js) - Google Analytics