- 浏览: 120026 次
- 性别:
- 来自: 深圳
文章分类
最新评论
遇到类型转换错误的时候(也就是说不能进行类型转换),struts2框架自动生成一条错误信息,并且将该错误信息放到addFieldError里面
类型转换与输入校验的流程
1. 首先Struts2对客户端传来的数据进行类型转换
2. 类型转换完毕后再进行输入校验
3. 如果类型转换和输入校验都没有错误发生,那么进入execute方法(调用商业逻辑)
注意:如果类型转换不成功,也同样要进行输入校验
1,新建一个register2.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <body> <table> <s:fielderror/> <s:form action ="register2"> <s:textfield name="username" label="username"></s:textfield> <s:password name="password" label="password"></s:password> <s:password name="repassword" label="repassword"></s:password> <s:textfield name="age" label="age"></s:textfield> <s:textfield name="birthday" label="birthday"></s:textfield> <s:textfield name="graduation" label="graduation"></s:textfield> <s:submit value="submit"></s:submit> </s:form> </table> </body> </html>
2,struts.xml配置如下
<action name="register2" class="com.test.action.RegisterAction2"> <result name="success">/success.jsp</result> <result name="input">/register2.jsp</result> </action>
3,RegisterAction.java,在validate方法中进行校验,注意这里是addActionError
package com.test.action; import java.sql.Date; import java.util.Calendar; import com.opensymphony.xwork2.ActionSupport; public class RegisterAction2 extends ActionSupport { private String username; private String password; private String repassword; private int age; private Date birthday; private Date graduation; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getRepassword() { return repassword; } public void setRepassword(String repassword) { this.repassword = repassword; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public Date getGraduation() { return graduation; } public void setGraduation(Date graduation) { this.graduation = graduation; } public String execute() throws Exception { System.out.println("execute....."); return SUCCESS; } public void validate() { System.out.println("validate ......."); if(age < 0){ this.addActionError( "your age is error.action error"); } if(null == username || username.equals("")){ this.addActionError("please input your username ,action error"); } if(null == password || null == repassword || !password.equals(repassword)){ this.addActionError("your password is invalid ,action error"); } if(null != birthday && null != graduation){ Calendar c1 =Calendar.getInstance(); c1.setTime(birthday); Calendar c2 =Calendar.getInstance(); c2.setTime(graduation); if(c1.after(c2)){ this.addActionError("birthday should be before graduation"); } } } }
4,可以在action中指定方法,如
<action name="register2" class="com.test.action.RegisterAction2" method="abc"> <result name="success">/success.jsp</result> <result name="input">/register2.jsp</result> </action>
在程序执行到RegisterAction2时,会去执行abc方法 ,不再去执行execute,但会继续调用validate方法进行输入校验。也可以为abc编写专用的校验方法validateAbc,注意:执行完专用的validateAbc后,struts2仍然会执行validate方法,如果想不执行,可以将validate改名为validateExecute。那么只有在执行execute时,才会执行validateExecute。
发表评论
-
Struts2(18):Struts2深入探索续2
2011-06-06 03:15 586Struts2与Servlet是低耦合的,这可使项目不依赖于具 ... -
Struts2(17):Struts2深入探索续
2011-06-06 00:26 11181,struts2有属性驱动方式与模型驱动两种方式:之前的例子 ... -
Struts2(16): Struts2深入探索
2011-06-05 12:56 929先来看看struts2包中的一些配置文件: 1,strut ... -
Struts2(15):Struts2的国际化续
2011-06-04 23:38 921Struts2中action错误的国际化 在action类的 ... -
Struts2(14):Struts2的国际化
2011-06-04 02:44 887先看看JAVA的国际化实现:JAVA国际化是使用java.ut ... -
Struts2(13):Struts2的上传下载续2
2011-06-04 00:07 926本节主要介绍上传任意数据的文件、指定文件类型上传与Struts ... -
Struts2(12):Struts2的上传下载续
2011-05-29 12:40 931使用Struts2结束common的fileupload和io ... -
Struts2(11):Struts2的上传下载
2011-05-29 01:00 860首先来看看在JSP中上传是如何做的: 从upload.jsp ... -
Struts2(10):Struts2的监听器与验权小例
2011-05-28 18:27 3051Struts2的监听器: 在xwork-2.0.7.jar包 ... -
Struts2(7):Struts2的输入校验框架(xml配置文件校验)
2011-05-22 22:00 2978上一节使用了Action类中的validate方法进行校验,此 ... -
Struts2(5):Struts2的输入校验
2011-05-22 16:23 11321,Register.jsp,一个注册页面,包括用户名,密码, ... -
Struts2(4):Struts2类型转换2
2011-05-22 12:35 10751,修改上一节的input.jsp文件 <s:form ... -
Strtus2(3):struts2的类型转换
2011-05-21 23:34 9991,新建一个Point类,包含两个变量x,y。只有set,ge ... -
Struts2(2):Struts2的输入检验
2011-05-21 12:44 9531:新建一个login2.jsp,使用Struts2的标签编写 ... -
Struts2(1):入门与配置
2011-05-21 11:51 5631,在MyEclipse中新建一个WEB工程:struts2d ... -
Struts2(9):开发自己的Struts2拦截器(编码与配置)
2011-05-15 21:16 1523要开发自己的Struts2拦截器类,需要实现Inte ... -
Struts2(8):拦截器的简单实现原理
2011-05-15 18:29 869什么是拦截器: 拦截器,在AOP(Aspect-Oriente ...
相关推荐
Struts2输入校验总结 Struts2输入校验
struts2输入校验 对指定方法进行输入校验
struts2的输入校验有两种方式: 一.重写validate()方式 二.采用配置文件的方式 先我们就以一个简单的登录的例子来讲解这个吧. 重点讲解下,第二个采用配置文件的方式: 1.添加一个xml的校验文件,保存在...
Struts2输入校验,Struts2提供了功能强大的输入校验机制,通过Struts2内建的输入校验器,应用无需书写任何代码,即可完成大部分的校验功能,并可以同时完成客户端和服务器端的校验。
struts2输入校验总结,struts2自带的校验器,以及校验器不能做的check的处理的总结
使用struts2进行输入校验入门 (附图)
struts2校验器,字段,非字段校验器的语法规则……
Struts 2 输入校验
NULL 博文链接:https://chaoyi.iteye.com/blog/2161948
本人写的struts2 输入校验的小程序,希望大家踊跃下载。 本人写的struts2 输入校验的小程序,希望大家踊跃下载。 本人写的struts2 输入校验的小程序,希望大家踊跃下载。
实验目的: 熟悉和掌握Struts2自定义类型转换。 熟悉和掌握Struts2内建校验的操作方法 ...(2) 根据实验四的图书管理系统,扩展图书新增功能,要求对新增页面表单中的每个文件输入框进行输入校验
struts2校验框架 struts2校验框架 struts2校验框架 struts2校验框架
Struts2校验框架应用
基于Struts2框架的用户输入校验的完整讲解!是我的原创! 非常感谢大家提出宝贵意见
要求使用Struts2的内建校验器校验“书名”、“作者”、“出版日期”、“价格”和“库存数量”字段;要求手动编写代码校验“书号”的有效性;要求手动编写代码校验“出版社”字段中是否包含了“出版社”三个字。
Struts2 和Struts1同样也提供了校验框架,但在Struts2 已经不再把校验框架做为一个插件,而是已经内置到了Struts2中,而且配置起来更为简单方便,功能也更强大。