`

Struts2 数据输入校验(1) —— 函数验证

阅读更多

用struts2标签库来实现上述目的的基本原理:
错误消息分为field级和action级,都在ActionSupport类中预定义了,不同的是,
fieldError是通过一个Map来实现,事实上记录了field的名字和错误信息,因此能在页面上对应的field中显示;
而actionError是通过一个Collection实现,没有记录报错的来源,只记录了错误信息。
 

注意,下面是简要流程: 
(1)页面提交到action之后,首先struts会尝试对输入的字符串信息根据Action中定义的属性类型进行类型匹配及转换,如果输入为空,它会将内容置为该类型的缺省值(0、0.0、空字符串等等),对于数据格式不匹配的情况,比如说在age栏里面输入字母等等,struts会自动提示默认的错误,并返回input,这一工作是struts2自动完成的。
 
(2)然后,验证机制生效,调用validate()函数和XML验证框架中的验证逻辑(《Struts2 数据输入校验(2) —— XML验证 》会提到),检查的同时会因为验证错误调用了addFieldError()和addActionError()。页面提交之前,struts会调用ActionSupport(严格说是ValidationAware接口)的hasErrors()方法,该方法很简单,就是检查fieldError的Map和actionError的Collection是否为空,如果均为空,则调用execute()方法[*]进行业务逻辑的调度,否则返回error。
 
(3)最后,程序会根据返回信息执行forward操作,struts.xml中则定义了这些返回值所对应的跳转逻辑。


 
如果有错误返回,错误信息会在页面上提示
在Action中所有addFieldError()设置的信息将在对应的field位置显示;
在Action中所有addActionError()设置的信息将不会显示,除非在页面中定义了s:actionerror控件,那么错误将以ul的格式显示。
 
 
 
对多验证和跳转逻辑的支持
对于一些Action如果需要重用,struts也提供了支持。
上述[*]处,你也可以指定其它任意的名字,这需要在struts.xml中修改对应action的method属性

<action name="XXXAction" class="com.myspace.myname.XXXAction" method="newExcuteName">
      
<result>success.jsp</result>
</action>

 
同时在XXXAction中我们需要定义一个方法
public String newExcuteName(){  /*dummy code*/ }

如果同时还定义了
public void validateNewExcuteName(){  /* dummy code */ }

那么在执行validate()之前,程序会先执行validateNewExcuteName()方法
可以考虑把所有公用的验证逻辑放到validate()方法中
上述过程完全是靠java反射机制实现的,效率会低一些,所以除非真有必要,否则不用。

 

错误提示字符串的本地化
在validator方法中直接写错误信息固然方便,但不算是一个好习惯,同时也不能支持本地化。下面简单说明本地化的两种方式
1、全局国际化默认的错误提示,首先在struts.xml中加入常量

<struts>
<constant name="struts.custom.i18n.resources" value="message"></constant>
</struts>


然后在与struts.xml同级的位置建立message.properties中写入

xwork.default.invalid.fieldvalue={0} error

 

2、针对某个Action的验证错误提示
在与XXXAction同级目录下建立与该Action同名的属性文件
XXXAction.properties中写入

invalid.fieldvalue.字段名=错误信息

http://www.blogjava.net/bacon/archive/2009/02/01/252888.html

分享到:
评论

相关推荐

    Struts2输入校验总结

    综上所述,Struts2的输入校验机制不仅支持基本的手动校验,还提供了高度可配置和扩展的验证框架,使得开发者能够根据应用的具体需求,灵活地实现各种校验逻辑,从而提升应用程序的质量和用户体验。

    Struts2的输入校验

    在Struts2中,输入校验是确保数据安全、准确和有效的重要环节。本篇文章将深入探讨Struts2的输入校验机制及其相关知识点。 **输入校验的重要性** 输入校验是Web应用开发中的关键步骤,它可以防止恶意用户提交无效或...

    struts2的输入校验

    struts2的输入校验有两种方式: 一.重写validate()方式 二.采用配置文件的方式 先我们就以一个简单的登录的例子来讲解这个吧. 重点讲解下,第二个采用配置文件的方式: 1.添加一个xml的校验文件,保存在...

    Struts2 校验器

    在Struts2中,校验器(Validator)是处理用户输入验证的核心组件,确保提交到服务器的数据符合预设的业务规则。这篇博客文章可能是关于如何使用Struts2的内置校验机制以及自定义校验规则的探讨。 Struts2的校验框架...

    使用struts2进行输入校验

    在Struts2中,输入校验是一个至关重要的部分,它确保了用户从客户端提交的数据符合预设的业务规则,从而避免了无效或不合法数据进入系统。本篇文章将详细介绍如何在Struts2中进行输入校验,包括两种主要实现方式:...

    struts2 简单数据校验

    这篇博客“Struts2 简单数据校验”可能详细介绍了如何在Struts2框架中实现对用户输入的有效性验证。 数据校验是任何Web应用程序中的核心部分,它涉及到多个方面,如必填字段、数据类型检查、长度限制、格式验证等。...

    struts2输入校验深入总结

    Struts2的Interceptor(拦截器)允许在Action执行前进行数据校验。例如,`ValidationInterceptor`是一个内置的拦截器,它使用Action级别的注解进行校验。如果校验失败,会将错误信息存入ActionContext,然后跳转到...

    struts2输入校验

    1. **Struts2的校验框架**: Struts2提供了内置的验证框架,基于XML配置或者注解实现。这个框架允许开发者定义一组规则来检查用户提交的数据,这些规则可以在Action类中应用。 2. **XML输入校验**: - **创建校验...

    Struts2简单数据校验源码 20120417

    在Struts2中,数据校验是确保输入数据正确性和完整性的关键环节,它可以帮助开发者预防潜在的数据错误,提高应用的健壮性。本资料"Struts2_1100_SimpleDataValiation"提供了关于Struts2简单数据校验的源码,这将有助...

    Struts2 用户输入校验教程

    在Struts2中,用户输入验证是确保数据安全性和应用稳定性的重要环节。本教程将详细介绍如何在Struts2框架下进行用户输入的验证。 用户输入验证是为了确保从客户端接收到的数据符合预期格式和要求,防止非法或恶意的...

    Struts2的输入校验实例代码

    总结来说,Struts2的输入校验是通过结合客户端和服务器端的校验策略,提供了一套全面且灵活的数据验证机制。代码校验和配置校验都各有优势,可以根据项目的具体需求选择合适的方式。在实际开发中,通常会结合两者以...

    struts2的数据校验

    总结,Struts2的数据校验机制提供了强大的工具来确保用户输入的有效性,通过注解、XML配置或自定义校验器实现灵活的校验规则。通过正确处理校验错误并利用国际化功能,开发者可以创建出健壮且用户体验良好的Web应用...

    Struts2数据校验与国际化

    在“Struts2数据校验与国际化”这一主题中,我们将深入探讨Struts2如何通过不同的验证机制确保数据的有效性,以及如何通过国际化功能提供多种语言的用户体验。 首先,数据校验是任何Web应用程序中的关键环节,它...

    struts2输入校验总结

    总结,Struts2的输入校验机制提供了手动和自动两种方式,结合配置文件和内置校验器,能够实现灵活且强大的数据校验,有效地防止了非法数据的流入,提升了系统的安全性。在实际开发中,开发者可以根据业务需求选择...

    Struts 2 数据校验功能及校验问题的解决方案

    在Struts 2中,数据校验是实现业务逻辑的重要组成部分,确保输入的数据符合预设规则,从而提高应用程序的稳定性和安全性。数据校验功能是通过Struts 2的ActionSupport类和其他相关组件来实现的。 首先,...

    浪曦_Struts2应用开发系列_第5讲.Struts2的输入校验.rar

    1. **Struts2输入校验概述** - 输入校验是任何Web应用中的必要步骤,用于验证用户在表单中输入的数据是否合法。 - Struts2提供了一种灵活且可扩展的方式来实现输入校验,包括在服务器端和客户端进行。 2. **...

    struts2中的输入校验

    总的来说,Struts2的输入校验机制既支持代码层面的灵活验证,也提供基于配置的标准化校验,为企业级应用提供了强大的数据验证能力,有助于提高系统的稳定性和用户体验。正确使用这些校验机制,能有效防止因用户输入...

Global site tag (gtag.js) - Google Analytics