Struts2数据输入校验(2) —— XML验证

struts2提供了通过XML方式对输入数据进行验证的校验框架。

在与XXXAction同级的目录下,建立XXXAction-validation.xml,即为该Action的校验逻辑。

该校验XML的dtd格式文件为 http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd,具 体内容可以展开下面的代码:

<?xml version="1.0" encoding="UTF-8"?>
<!--
  XWork Validators DTD.
  Used the following DOCTYPE.
  <!DOCTYPE validators PUBLIC
      "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
      "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
-->
<!ELEMENT validators (field|validator)+>
<!ELEMENT field (field-validator+)>
<!ATTLIST field
   name CDATA #REQUIRED
>
<!ELEMENT field-validator (param*, message)>
<!ATTLIST field-validator
   type CDATA #REQUIRED
   short-circuit (true|false) "false"
>
<!ELEMENT validator (param*, message)>
<!ATTLIST validator
   type CDATA #REQUIRED
   short-circuit (true|false) "false"
>
<!ELEMENT param (#PCDATA)>
<!ATTLIST param
   name CDATA #REQUIRED
>
<!ELEMENT message (#PCDATA)>
<!ATTLIST message
   key CDATA #IMPLIED
>

可以看到,数据校验XML的根元素<validator>下面可以包含两种 子元素:field和 validator

1、前者field   是针对字段进行的校验;

2、后者validator 是非字段或者说全局范围的校验。

在介绍完校验是怎么回事后,后面会简单比较一下两种校验方式的区别。

一、字段校验:(field)

先看个基本示例

<validators>
   <field name="username">
     <field-validator type="requiredstring">
       <message key="error.username.required"/>
     </field-validator>
   </field>
     <field name="password">
        <field-validator type="stringlength">
       <param name="trim">true</param>
       <param name="minLength">4</param>
       <param name="maxLength">10</param>
       <message>password should be ${minLength} to ${maxLength} characters long.</message>
     </field-validator>
     </field>
</validators>

时间: 2024-11-01 16:06:22

Struts2数据输入校验(2) —— XML验证的相关文章

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

用struts2标签库来实现上述目的的基本原理: 错误消息分为field级和action级,都在ActionSupport类中预定义了,不同的是, fieldError是通过一个Map来实现,事实上记录了field的名字和错误信息,因此能在页面上对应的 field中显示: 而actionError是通过一个Collection实现,没有记录报错的来源,只记录了错误信息. 注意,下面是简要流程: (1)页面提交到action之后,首先struts会尝试对输入的字符串信息根据Action中定义的属性

Struts2数据输入验证教程详解_java

一.前言 1.1.什么是输入验证?为什么需要输入验证? 在上一篇文章中,我们学习了数据类型转换,我们提到了表示层数据处理的两个方法,也提到了用户输入数据需要进行类型转换才能得到我们想要的数据,那么,我们怎么确定类型转换后的数据,是我们想要的数据呢?这里有点绕.你可以这样想:一个成年男子年龄是18岁,你现在想要得到18这个数据,但是,用户输入32,经过类型转换也是对的,但是数据不是你想要的.这时候,我们要怎么办?所以输入验证在这里就有用处了. 类型转换和输入验证的关系是:类型转换是输入验证的前提,

struts2中输入校验错误提示显示不出来

问题描述 我在struts2输入校验中.错误提示为什么老是显示不出来呢.就是配置文件中的<message>错误提示</message>这个标签中间的文字为什么没有像书上预期的显示出来呢 解决方案 解决方案二:http://blog.csdn.net/cnidb/archive/2009/04/04/4047886.aspx解决方案三:看看你的错误信息级别:分fielderror和actionerror两个级别,画面使用对应标签即可.validate()方法和框架验证都是存放在fie

struts2 xml验证支持字段互相比较么?

问题描述 Action里面有2个字段private String flightnumber;private String flightroute;flightnumber只能是[A,B,C] 其中的任意一个值,并且在flightnumber=A 时,flightroute只能也为A像这样字段互相依赖的验证在struts2里面用xml验证能实现么? 解决方案 这属于交叉校验,现在的struts2还做不到,希望你能在你的action的方法校验里面来实现.毕竟xml的配置仅仅能实现一些简单的功能,检查

害怕别人乱输数据吗?提高你的数据校验功能-AJAX输入校验(8)

7.4  AJAX输入校验 Struts 2框架在使用客户端校验的时候,由于需要转换为JavaScript脚本,所以并不是所有服务器端的校验规则均能转换为客户端校验,而AJAX校验则可以使用所有的服务器端校验规则. AJAX是一种新兴的技术,主要特点是可以异步处理用户请求,例如,用户在填写一个表单的时候,当填写完一个文本框后,该文本框失去焦点的同时,会异步地完成同服务器的交互,提示校验信息,而不是所有表单填写完后单击"提交"按钮时显示校验信息. 在这里笔者简单演示一个示例,让读者体验A

struts2 validation.xml验证失败及result type=chain

问题描述 小弟最近在做一个简单的struts2的小东西,遇到了麻烦,代码如下struts2配置文件<actionname="manageKind"class="action.ManageKindAction"><result>/WEB-INF/jsp/manageKind.jsp</result></action><actionname="addKind"class="action.

Struts中使用validate()输入校验方法详解_java

1.在ActionSupport中有一个validate()方法,这个方法是验证方法,它会在execute()方法执行之前执行,所以能够起到很好的验证的作用. @Override //重写Action中的validate()方法 public void validate() { if(null==this.username||this.username.length()<4||this.username.length()>6){ this.addActionError("userna

创建动态数据输入用户界面

创建|动态|数据 下载实例 简介 当创建数据驱动的 Web 站点时,Web 开发人员遇到的最常见的任务之一就是创建数据输入窗体.数据输入窗体是为系统用户提供数据输入方法的 Web 页.创建特定数据输入窗体的任务通常应该先从需求分析入手,即,明确指出需要从用户收集何种信息.需求确定之后,下一步是设计数据输入 Web 窗体,包括创建图形用户界面以及编写根据用户输入更新数据库的代码. 当数据输入窗体需求事先已知,并且此数据输入窗体对系统中所有用户都一样时,创建这样的输入窗体就毫无挑战性.然而,如果需要

在ITemChanged事件中对数据窗口中的数据进行校验

作者:达通兴电脑科技公司(www.study01job.com) 郭宝利 对用户录入的数据进行校验,这是数据窗口控件本身就具备的功能.但是,我们希望做更多的处理,并且错误信息显示界面更友好一些.为此,我们编写一个全局函数,在数据窗口的ItemChanged事件中调用,并且使用MessageBox显示该函数返回的错误信息.另外,还需要在数据窗口的ItemError事件中return 1来阻止数据窗口本身的错误提示窗口的显示. 当然,对下面的函数进行扩充,可以加入对更多类型数据的校验,以及基于业务要