- 浏览: 174861 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
yinvent:
谢谢,终于找到一个可以用的例子!
struts2学习之一简单范例 -
锅巴49:
学习了,不错.
使用 Spring 2.5 注释驱动的 IoC 功能 -
fooky:
你好,今天在配置spring secutiry3,想让系统先从 ...
spring security 配置文件小结(逐步深化到url级别) -
lj508:
你好啊 请教你个问题
我用那个纯jsp上传时
怎么运行时根本没 ...
Sturt2学习之十二---文件上传 -
641216927:
我还是一个struts2新手。
有个问题请教一下:
同时在t ...
struts2学习之一简单范例
一、输入校验与类型转化的关系
遇到类型转换错误的时候(也就是说不能进行类型转换),struts2框架自动生成一条错误信息,并且将该错误信息放到addFieldError里面
类型转换与输入校验的流程
1. 首先Struts2对客户端传来的数据进行类型转换
2. 类型转换完毕后再进行输入校验
3. 如果类型转换和输入校验都没有错误发生,那么进入execute方法(调用商业逻辑)
注意:如果类型转换不成功,也同样要进行输入校验,这样一来某些字段会出来两个错误提示信息。(所以对某些字段可以不做输入校验,光做类型转换,如上例中
可注销掉
// if(null == birthday) // { // this.addFieldError("birthday","birthday invalid"); // } // if(null == graduation) // { // this.addFieldError("graduation","graduation invalid"); // }
对于有些struts框架提供的错误信息,还是去不掉,可以使用struts的简单主题,即可以把某个字段设置为simple"的模式、也可以把表单也改成simple模式,见下文把表单也改成simple模式。
二、转换错误提示信息个性化
struts默认的转化信息报错往往不友好
我们可以通过以下方式处理
方式一,“转化信息报错”全局的属性文件
1、在strut.xml加上以下内容
<constant name="struts.custom.i18n.resources" value="message"></constant>
2、在src文件夹下加入以下文件message.properties
内容为xwork.default.invalid.fieldvalue={0} error
{0}表方哪个字段出错了,显示时自动地会用出错的字段填充。
方式二,“转化信息报错”局部的属性文件
位置:和相应的action在同一个包中
命名:action的名字.properties
例如:RegisterAction.properties文件
该文件内容为
invalid.fieldvalue.age=age convert error
若要把这个显示为中文,可以使用jdk的工具native2ascII.exe(该工具可以转换一行汉字或一个汉字文件成ascii吗)
三、对于输入输出页面改用struts标签库
1、register2.jsp 若采用的是默认模式的话,struts会自动生成表格
<body> <s:form action="register" > <s:textfield name="username" label="username" ></s:textfield> <s:password name="password" label="password" ></s:password> <s:repassword 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> </body>
下面采用的是theme="simple"的模式:
<%@ taglib prefix="s" uri="/struts-tags"%> ... <body> <table align="center" width="40%"> <tr> <td> <s:fielderror cssStyle="color:red" /> </td> </tr> </table> <s:form action="register" theme="simple"> <table align="center" width="40%" border="1"> <tr> <td> username </td> <td> <s:textfield name="username" label="username" id="usernameId"></s:textfield> </td> </tr> <tr> <td> password </td> <td> <s:password name="password" label="password" id="passwordId"></s:password> </td> </tr> <tr> <td> re-password </td> <td> <s:password name="repassword" label="repassword" id="repasswordId"></s:password> </td> </tr> <tr> <td> age </td> <td> <s:textfield name="age" label="age"></s:textfield> </td> </tr> <tr> <td> birthday </td> <td> <s:textfield name="birthday" label="birthday"></s:textfield> </td> </tr> <tr> <td> graduation </td> <td> <s:textfield name="graduation" label="graduation"></s:textfield> </td> </tr> <tr> <td> <s:submit value=" submit "></s:submit> </td> <td> <s:reset value=" reset "></s:reset> </td> </tr> </table> </s:form> </body>
四、Error级别
filed级别的fieldError和action级别ActionError
可将将原来的addfieldError修改为addActionError ,我们就开始使用ActionError级别了,例如:
if (null == username || username.length() < 6 || username.length() > 10) { this.addActionError("username invalid"); }
五、以上修改后,struts不会提示任何错误信息了
因为register2.jsp默认只会显示addfieldError级别的信息
六、如何显示ActionError级别的信息呢
很简单,在register2.jsp页面上加上以下信息即可了
<s:actionerror/>
注意:在第五步,即使不显示也通不过验证的,因为在整个验证中只要addfieldError和addActionError只要有一个不为空,就会验证通不过!
七、在sturts.xml配置文件中增加method属性,在RegisterAction增加相应method属性值的方法
<action name="register1" class="com.test.action.RegisterAction" method="test"> <result name="success">/success.jsp</result> <result name="input">/register2.jsp</result> </action> <action name="regir2" class="com.test.action.RegisterAction" method="abc"> <result name="success">/success.jsp</result> <result name="input">/register2.jsp</result> </action>
@Override public String execute() throws Exception { return SUCCESS; } public String test() throws Exception { return SUCCESS; } public String abc() throws Exception { System.out.println("abc method invoked"); return SUCCESS; } public void validateAbc() { System.out.println("validateAbc() invoked"); } @Override @SuppressWarnings("unchecked") public void validate() { System.out.println("validate~~~~~~~~~~~~~~~~~~~"); if (null == username || username.length() < 6 || username.length() > 10) { List list = new ArrayList(); list.add(username); this.addActionError(this.getText("username.invalid",new String[]{username})); }
这样一来,以前在执行这个RegisterAction的时候,业务逻辑是只能放在excute()方法中的,现在也可以放在test方法中、abc()方法中了。提交register1表单时
可以用test方法。提交regi2表单时可以用类中的abc方法
那么这样一来,执行这些方法前,大家都用统一的一个很大的validate()方法来验证吗?显然这样是比较粗粒度的,不精细的
struts提出了方法相对应的validate()。如上面两个方法对应的validate()分别为:validateTest()和validateAbc()
如调用registerAction的test方法:执行过程将会如下的顺序validateTest()--》validate()--》test()
这样一来,谁都还是要去执行validate()验证,所以可以这样处理,再写一个validateExcute()对应Excute方法,然后在validate()中什么也不写,空方法。
发表评论
-
webwork Action中获取request, response,session对象的方法
2009-04-16 17:25 1663webwork Action中获取request ... -
不依赖XML代码粘合创建Struts 2应用程序
2009-04-07 15:32 1442不依赖XML代码粘合创建Struts 2应用程序 原文地址:h ... -
struts.properties粗解
2009-04-07 14:28 1423原文章地址:http://fratemity1314.spac ... -
Struts2学习之十五-声明式的异常处理
2009-04-06 22:32 889看下文前可以先参考: http://blog.chinaun ... -
struts2学习之十四----其他知识点
2009-04-06 19:31 1297一、struts2探索学习完一定需要实际去运行,这样才能有更加 ... -
Sturt2+spring整合
2009-04-01 17:55 1141一、相应的spring的jarStruts2-spring-p ... -
Sturt2学习之十三---文件下载
2009-04-01 17:01 1031Sturt2学习之十三---文件下载1、download.js ... -
Sturt2学习之十二---文件上传
2009-04-01 15:59 2290一、纯jsp文件上传1、新建文件夹upload内含upload ... -
struts学习之十一-----国际化
2009-04-01 10:59 1071一、java对国际化的支持 ... -
struts2学习之九---拦截器
2009-04-01 10:34 1471拦截器实现机制一、回忆“java反射与动态代理二.txt”,因 ... -
struts2学习之八校验框架--非字段校验
2009-04-01 01:16 1268一、非字段校验 用属性来校验字段和字段检验刚好是参照物相反 ... -
struts2学习之七校验框架--字段校验
2009-04-01 00:23 1549struts2学习之七校验框架--字段校验(使用xml文件)一 ... -
struts2学习之五(最基本的)输入校验
2009-03-31 21:51 931一、register.jsp注册页面 //以下第一两句 的作用 ... -
struts2学习之四、类型转换2
2009-03-31 17:50 854<h3><font color=" ... -
struts2学习之三、类型转换
2009-03-31 17:08 910struts2学习之三、类型转 ... -
struts2学习之二------基本验证
2009-03-31 15:39 1004struts2学习之二----基本 ... -
struts2学习之一简单范例
2009-03-31 14:45 2213简单范例1、下载struts2.0.11-all.rar 2、 ...
相关推荐
### Struts2输入校验深度解析 #### 一、手动输入完成校验 在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中...
这个"struts2登录,以及输入校验的demo"是一个基础的实例,它展示了如何在Struts2中实现用户登录功能,并进行输入验证,确保数据的正确性和安全性。 首先,我们来看Struts2的核心组成部分: 1. **Action类**:这是...
在第六讲中,我们将深入探讨Struts2的输入验证机制,这是确保应用程序数据安全性和正确性的重要环节。Struts2的输入验证可以分为客户端验证和服务器端验证,两者都有其优点和适用场景。 首先,客户端验证通常使用...
本学习笔记中包含的两个文档——"04校验框架.doc"和"03输入校验.doc",分别详细介绍了这两个主题。"04校验框架.doc"可能涵盖了Struts2校验框架的基本用法,包括XML配置、自定义校验规则、错误处理等方面的内容。而...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。在Struts2中,输入校验是...博客"Struts2输入校验深入总结"可能涵盖了这些内容,提供了更多实战经验和技巧,值得学习和参考。
这篇博客“Struts2 简单数据校验”可能详细介绍了如何在Struts2框架中实现对用户输入的有效性验证。 数据校验是任何Web应用程序中的核心部分,它涉及到多个方面,如必填字段、数据类型检查、长度限制、格式验证等。...
在本篇“Struts2学习笔记三”中,我们将聚焦于Struts2的类型转换这一核心特性。类型转换在处理用户提交的数据时非常关键,它允许Struts2自动将请求参数转换为Java对象的属性。 在Struts2中,类型转换主要由`...
在基础的Struts2应用中,我们常常会继承`ActionSupport`类来实现输入校验,从而提高代码的复用性和可维护性。 `ActionSupport`是Struts2提供的一种基础Action实现,它包含了默认的行为,如错误处理、国际化支持和...
Struts是Apache软件基金会开发的一个开源框架,主要用于构建基于Java的企业级Web应用程序。...通过下载的`WebRoot`和`src`目录文件,可以进一步学习和研究Struts中的输入校验实现,提升对Struts框架的理解。
从给定的文件信息来看,标题“struts2中文学习文档”和描述“struts2的根本webwork2”表明这是一份关于Struts2框架的学习资料,特别强调了Struts2与WebWork2的关系。Struts2是Apache Struts的一个版本,它是一个用于...
在Struts2的学习过程中,第五讲主要探讨的是输入验证,这是确保应用程序数据安全和准确性的关键步骤。输入验证通常发生在客户端和服务器端,防止恶意数据的提交,并确保用户输入的数据符合预设的格式和规则。 首先...
Struts2提供了内置的验证框架,允许开发者自定义校验规则,以满足特定业务需求。下面将详细介绍Struts2自定义校验框架的相关知识点。 1. **Struts2验证框架概述** Struts2的验证框架主要负责处理用户提交的数据,...
- **框架原理**:Struts2提供了强大的输入校验功能,可以自动检查用户提交的数据是否符合预期。 - **配置方式**: - 使用注解方式(适用于Struts2较新版本)。 - 在`struts.xml`或Action类中通过配置文件的方式...
在Struts2中,数据校验是确保输入数据正确性和完整性的关键环节,它可以帮助开发者预防潜在的数据错误,提高应用的健壮性。本资料"Struts2_1100_SimpleDataValiation"提供了关于Struts2简单数据校验的源码,这将有助...
Struts 是一个经典的Java Web...通过这个例子,开发者可以学习到如何在实际项目中运用Struts进行用户输入的验证,以及如何结合数据库实现用户管理功能。这不仅有助于提升程序的健壮性,还能提高用户对系统的信任度。
总的来说,这个压缩包提供了一个全面的学习资源,涵盖了Struts2框架中的关键功能:数据校验、前端和后端校验策略、国际化处理以及错误信息的样式定制。通过深入研究这些文档和示例,开发者可以有效地提升其在Struts2...
5. **类型转换与输入校验**:Struts2在类型转换过程中也会进行基本的校验,如检查非空、数值范围等。 **四.Struts2的核心:拦截器** 拦截器是Struts2的核心组件,它们在Action执行前后介入处理流程。拦截器可以...
在Struts2中,校验是确保数据质量和系统安全的关键环节。本文将深入探讨Struts2中的验证机制,以及如何利用它来提高应用的健壮性。 1. **Struts2验证框架基础** Struts2提供了强大的内置验证框架,允许开发者定义...
《Struts 2完全学习手册》全面讲述Struts 2开发框架的知识,包括Struts 2中配置文件的详细讲解、国际化与异常处理、数据类型的转换、数据的输入校验、Struts 2强大的标签库、Struts 2中文件的上传与下载、Struts 2对...