- 浏览: 581684 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
zhanghao1785:
jQuery jqGrid中ColModel的参数大全 -
haiyangyiba:
在实际应用中,回车提交一般需要注意的是,多次回车之间的间隔,换 ...
回车自动提交 -
fengkuangxiao6:
快捷键能写的这么详细,太棒了!
Eclipse中10个最有用的快捷键组合 -
Frank_Sun:
我的jdk版本是1.6.0.29,在finally中加retu ...
try catch finally与return的执行顺序 -
jueyue:
这个注解可以搞吗,感觉还不如放在前台
struts2校验(二):声明式验证(基于xml配置验证)(1)
struts2支持三种验证方式:
编程式验证、声明式验证、注解式验证
服务器端验证(输入校验、struts2自带的validate框架验证)
1.我们需要配置struts2项目的最基本的jar包。(validate验证框架是有"xwork-core"包提供的)
2.使用struts2自带的validate验证有两种方法
a):编程式验证 (也就是重写ActionSupport中的validate()方法) 在validate方法中进行编写我们需要的验证功能 这里需要提几点的就是:
1>.当我们需要对action中的某一个指定的方法使用validate()方法验证时我们需要自定义一个validate
2>.当我们使用自定义的validate方法时,最好将重写的ActionSupport的validate方法去掉 (这是为了避免
引起冲突,因为如果action类中存在重写的validate()方法 程序会自动调用我们自定义的validate方法 之
后再调用它 这样就验证了多次,非常不利于程序的效率。而且容易出现冲突)
3>.在创建自定义的validate方法时需要注意该方法的 方法名! 该方法名由 validate+对应的表单提交的
action中的 执行方法名称(首字母大写)(java代码中的方法名)
b):声明式验证(使用xml文件进行配置验证功能)(建议使用xml配置文件进行validate的验证)
: 1.需要使用到xwork-core包下的 xwork-validate.dtd(版本根据项目进行选择,不过大体相同)
: 2.关于使用Xml进行验证 的两种情况: 全局验证 和局部验证
a1):关于全局验证
全局就是针对整个action对象进行xml验证
当我们使用全局验证时候需要在 action对象的同目录下创建一个xml配置文件
文件名是由 : action对象的名称+(-validation.xml)
a2):关于局部验证
局部验证是针对action对象中的某一个方法进行xml验证
使用局部验证的时候同样要在 action对象的同目录下创建一个xml配置文件
不过使用局部验证需要在struts.xml 中进行配置
代码如下:(struts.xml)
1)编程式验证(即validate验证)(使用编码方式实现)
校验流程:
1. 类型转换器负责对字符串的请求参数执行类型转换。并将这些值设置成Action的属性值。
2. 转换过程中若出现异常,则将异常信息保存到ActionContext中,conversionError拦截器将其封装到fieldError中。
3. 通过反射调用validateXxx()方法,其中Xxx是即将处理用户请求的处理逻辑所对应的方法名。。
4. 调用validate(),在validate()方法中,如果系统发现有不合法输入时,调用其父类的addFieldError() 方法记录一个fieldError错误,当流程进入到execute()方法之前,系统检查有没有fieldError,如果有,则不再执行execute()方法,而是返回一个input逻辑视图通过<s:fielderror/>显示失败信息。
注意:首先执行validateXxx()方法,不管validateXxx()方法执行后的结果如何,都会去执行validate()方法
执行完validate()之后,如果没有发现存在Field或者Action级别的ERROR的话
那么才会执行相应的业务逻辑的方法,如Xxx()方法
1 2 3 4
validateXxx() -> Xxx() -> validate() -> excute()
如果1有异常,则不再执行2,进入3,3有异常,则不再进入4.
程序示例:
先来在Web根目录建立一个主页面(validate.jsp),代码如下:
<s:fielderror key="msgInfo" />
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>验证数据</title> </head> <body> <s:actionerror/> <s:actionmessage/> <s:form action="validate.action" theme="simple"> 输入内容:<s:textfield name="msg"/> <s:fielderror key="msgInfo" /> <br/> <s:submit/> </s:form> </body> </html>
在上面的代码中,使用了Struts2的tag:<s:actionerror>、<s:fielderror>和<s:actionmessage>,分别用来显示动作错误信息,字段错误信息,和动作信息。如果信息为空,则不显示
ValidateAction .java
public class ValidateAction extends ActionSupport { private String msg; private String phone; //节约篇幅,这里省略set/get方法 public String execute() { return SUCCESS; } public void validate() { if(!msg.equalsIgnoreCase("hello")) { System.out.println(INPUT); this.addFieldError("msg.hello", "必须输入hello!");// 可以直接写addFieldError("msgInfo", "必须输入hello!") this.addActionError("处理动作失败!"); } else { this.addActionMessage("提交成功"); } if(phone==null||"".equals(phone)){ this.addFieldError("phoneMsg", "必须输入手机号!"); } else { this.addActionMessage("提交成功"); } / * 大家从上面的代码可以看出,Field错误需要一个key(一般用来表示是哪一个属性出的错误) 而Action错误和Action消息只要提供一个信息字符串就可以了。 }*/ }
大家从上面的代码可以看出,Field错误需要一个key(一般用来表示是哪一个属性出的错误),而Action错误和Action消息只要提供一个信息字符串就可以了。
最后来配置一下这个Action,代码如下:
struts.xml
<package name="demo" extends="struts-default"> <constant name="struts.ui.theme" value="simple" /> // 配置不要自动生成table元素,此处也可以在jsp中设置<s:form action="" validate="true"> <action name="validate" class="action.ValidateAction"> <result name="success">/error/validate.jsp</result> <result name="input">/error/validate.jsp</result>//使用验证框架则必须配置input </action> </package>
validateXxx()同上。
关于addFieldError()讲解如下:
这两个add方法和ActionErrors类中的add方法类似,只是add方法的错误信息需要一个ActionMessage对象,比较麻烦。除了加入错误信息外,还可以使用addActionMessage方法加入成功提交后的信息。当提交成功后,可以显示这些信息。
以上三个add方法都在ValidationAware接口中定义,并且在ActionSupport类中有一个默认的实现。其实,在ActionSupport类中的实现实际上是调用了ValidationAwareSupport中的相应的方法,也就是这三个add方法是在ValidationAwareSupport类中实现的,代码如下:
private final ValidationAwareSupport validationAware = new ValidationAwareSupport();
public void addActionError(String anErrorMessage)
{ validationAware.addActionError(anErrorMessage);
}
public void addActionMessage(String aMessage)
{
validationAware.addActionMessage(aMessage);
}
public void addFieldError(String fieldName, String errorMessage)
{
validationAware.addFieldError(fieldName, errorMessage
[/size]
发表评论
-
spring 国际化
2013-06-09 15:03 307一、在src根目录下创建applicationContext. ... -
memcached(转)
2013-06-03 17:42 1025准备工作 下载安装并启动memcached-win32-1. ... -
Spring的任务调度服务实例讲解(二)
2013-06-03 16:18 112job的配置: applicationContext-job ... -
Spring三种bean注入方式
2013-06-03 15:06 185Spring中依赖注入有三种注入方式: 一、构造器注入; 二、 ... -
struts2 国际化
2013-05-30 10:13 151目录: 1. 国际化分类 ... -
struts2标签不显示Label的解决方法
2013-05-29 17:16 1143struts2标签不显示Label的解决方法 最近发现st ... -
struts2 标签 :<s:date> <s:debug >用法
2013-05-29 14:35 1456一、<s:date name="pop ... -
Struts2类型转换器(二)
2013-05-28 16:23 126Struts2之自定义类型转换器 Struts2自定义类型转 ... -
struts2的类型转换(一)
2013-05-28 16:17 132web应用类型的转换分为 ... -
类型转换与输入校验的流程
2013-05-27 11:27 925类型转换与输入校验的 ... -
struts2校验(二):声明式验证(基于xml配置验证)(1)
2013-05-24 17:48 4287声明式验证示例程序 下面将给出一个例子来演示如何使用Strut ... -
struts2校验(二):声明式验证(基于xml配置验证)(2)
2013-05-24 15:58 2434Struts2校验框架的本质 展开xwork-2.0.4.ja ... -
struts2:struts.xml和struts.properties
2013-05-23 10:41 1102struts.xml文件主要负责管理应用中的Action映射, ... -
struts2 -- interceptor 拦截器
2013-05-22 13:57 1065一、理解Struts2拦截器 1. ... -
struts2 struts.xml使用通配符
2013-05-22 10:37 10075.4.1 使用通配符 前面学过,可以在定义<acti ... -
struts.xml配置详解
2013-05-22 09:35 1027struts.xml是我们在开发中利用率最高的文件,也是Str ... -
知识二(线程编程方面)
2013-05-09 16:04 1066[size=medium]1.实现线程的 ... -
struts2的json插件配置详解(附示例strutsJson)
2013-03-09 11:58 2377为了方便ajax调用传输数 ... -
Spring的scope="prototype"属性
2012-12-18 14:38 1446可以利用容器的scope="prototype&qu ... -
oracle如何取出查询结果中的某一条数据
2012-08-22 13:24 6609此为查询结果的最新的一条数据。 SELECT * FRO ...
相关推荐
在Eclipse中配置Struts2...Struts2―表单验证validate(html)对validate的type属性校验类型以及param 做了详细的解释说明。 struts2和struts的比较 让你更清楚的知道struts2和struts的不同之处。 struts教程(html)
struts2的输入校验有两种方式: 一.重写validate()方式 二.采用配置文件的方式 先我们就以一个简单的登录的例子来讲解这个吧. 重点讲解下,第二个采用配置文件的方式: 1.添加一个xml的校验文件,保存在...
这个validate验证框架中的actiionerror级别的错误的验证提示,并包含了如何在一个Action中处理多个业务逻辑,(struts1.x 中的DispatcheAction),例子比较简单,希望对大家学习struts有所帮助。
Struts2用validate方法进行表单验证
但是这样做,不好之处就是我们可以通过人为的将开发者的验证js注掉,这样就导致验证失败,对后台安全性是一个很大的威胁,在采用struts2进行开发时,我们可以采用框架内置的校验器! 本附件为【Struts2】★☆之...
2 remote:"check.php" 使用 ajax 方法调用 check.php 验证输入值。 3 email:true 必须输入正确格式的电子邮件。 4 url:true 必须输入正确格式的网址。 5 date:true 必须输入正确格式的日期。日期校验 ie6 出错,慎...
Struts2验证应该包括验证器(需要xml配置)和Action中的validate()验证方法两种。后者很简单,只需要把 验证条件加进去就可以啦!
我最近在学习struts2框架,写了个简单的struts2的validate的验证,比较简单,适合初学者!
Struts2数据校验与国际化,有validate()方法校验,有validateXxx()方法校验,有配置文件校验;国际化:有英,香港,内地
[浪曦原创]Struts系列 第6讲 Struts的验证框架Validate使用续二(zk001)
Struts的验证框架Validate使用[2]
struts2输入校验总结,struts2自带的校验器,以及校验器不能做的check的处理的总结
Struts的验证框架Validate使用
利用validate的自带校验和自己去匹配正则表达式验证,很实用。
[浪曦原创]Struts系列 第5讲 Struts的验证框架Validate使用续一(zk001)
ide:myeclipse6.0 struts1.3 主要验证字段有姓名,密码,电话,email,信用卡,日期等等。
这个文件是一个eclipse工程, 导入,启动tomcat就可以访问. 简单自定义validate的例子, 简单易懂.
jquery.validate 与 struts2的整合使用
Struts更加复杂的validate验证