第4章Struts2类型转换和校验_第1页
第4章Struts2类型转换和校验_第2页
第4章Struts2类型转换和校验_第3页
第4章Struts2类型转换和校验_第4页
第4章Struts2类型转换和校验_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章类型转换和输入验证概述validateXxx()方法验证validate()方法验证资源文件中定义提示信息类型转换器validateXxx()方法验证服务器端验证输入数据的必要性防止用户误操作引发异常防止恶意攻击validateXxx()方法Xxx是action方法名首字母大写形式;validateXxx()在执行名称为xxx的acton方法之前,对输入数据进行验证;验证逻辑在validateXxx()方法中书写。validateXxx()方法验证使用validateXxx()示例以用户登录为例,在LoginAction方法中添加如下方法validateExecute(),该方法将在execute方法之前执行。注意:LoginAction应当继承ActionSupport类publicvoidvalidateExecute(){if(this.userId==null||this.userId.trim().equals("")){

this.addFieldError("userId","请输入用户ID!");}if(this.userPwd==null||this.userPwd.trim().equals("")){

this.addFieldError("userPwd","请输入密码!");}}validateXxx()方法验证使用validateXxx()示例(续)在LoginAction的配置中设置名称为“input”的result元素,该元素用于指定验证不通过时转发的视图。<actionname="login"class="edu.ibmai.action.LoginAction">

<resultname="success"type="redirect">/show.action</result>

<resultname="fail">/fail.jsp</result>

<resultname="input">/index.jsp</result>

</action>validateXxx()方法验证使用validateXxx()说明业务action应当继承ActionSupport类输入数据验证未通过时,应使用父类的如下方法将错误信息放入错误信息集合。

addFieldError(String

fieldName,StringerrorMessage);第一个参数:字符串类型,值为未通过验证的属性名称;第二个参数:字符串类型,值为错误信息。validateXxx()方法验证(续)使用validateXxx()说明原理struts2调用xxx()方法之前,先调用validateXxx()方法;validateXxx()方法执行完毕之后,struts2检查action的错误集合是否放有错误信息;如果错误集合中有错误信息,则在action配置中寻找名称为”input”的结果视图,并将请求转发至该视图。如果错误集合中无错误信息,正常调用xxx()方法。validate()方法验证validate()方法validate()也同样用于服务器端对输入数据验证执行一个action方法之前,validate()都会被调用action中所有validateXxx()方法执行完毕之后,将调用validate()方法。validate()其它方面与validateXxx()相同validate()方法验证示例publicvoidvalidate(){if(this.userId==null||this.userId.trim().equals("")){

this.addFieldError("userId","请输入用户ID!");}if(this.userPwd==null||this.userPwd.trim().equals("")){

this.addFieldError("userPwd","请输入密码!");}}资源文件中定义提示信息硬编码提示信息的缺点无法快速满足用户对提示信息变化的需求无法适应界面语言国际化的需求。资源文件的概念软件界面上的显示信息可以看做信息资源信息资源从程序编码中分离,存储于独立的文件,这种文件即为资源文件。资源文件中定义界面信息的优点适应不同用户对提示信息不同措辞的要求有益于软件的国际化。资源文件中定义提示信息资源文件Strut2的资源文件的建立资源文件的命名资源文件的后缀名一律为“properties”,即java属性文件命名格式:主名称_语言_地区.properties例1:ApplicationResource_zh_CN.properties例2:ApplicationResource_en_US.properties例3:ApplicationRperties

其中不带语言和地区的资源文件为默认资源文件,当找不到指定语言和地区的资源文件时使用默认文件资源文件中定义提示信息资源文件Strut2的资源文件的建立资源文件的范围层次全局资源文件适用于遍布于整个应用程序的国际化字符串在struts.xml中或perties指定全局资源文件,struts.xml中配置,示例如下:包范围的资源文件在某类包的目录下建立主名为package的资源文件Action范围的资源文件在Action的包下建立主名与Action类名同名的资源文件资源文件中定义提示信息资源文件Strut2的资源文件的建立资源文件查找顺序Action范围》包范围》全局范围资源文件中定义提示信息获取资源信息在action中使用父类(ActionSupport)的getText()方法从资源文件中获取信息在jsp页面通过标签<s:text>获取信息或者通过使用ognl表达式:getText('key')获取信息资源文件中定义提示信息示例编写资源文件在action类所在包下建立与action类同名的资源文件(后缀名为.properties),本例即为LoginAperties在action中使用父类(ActionSupport)的getText()方法从资源文件中获取信息error.login.userid.empty=Pleaseinputtheidofuser!error.login.userpwd.empty=Pleaseinputthepasswordofuser!if(this.userPwd==null||this.userPwd.trim().equals("")){

this.addFieldError("userPwd",this.getText("error.login.userpwd.empty"));}Struts2的类型转换器类型转换器的作用在Struts2中通过类型转换器将浏览器提交的参数转换为与Action属性相适应的类型并赋值。Struts2内置了常用的类型转换器,因此在大多数情况下,开发者无需为类型转换编写代码在某些特殊情况下,Struts2的内置转换器不能适应要求,就需要自行开发转换器Struts2的类型转换器转换出错后,ConversionErrorInterceptor截拦器会截拦转换异常,该截拦器会带领我们进入result为input的URL,并通过<s:fielderror></s:fielderror>显示错误信息.前提:Action必须是ActionSupport的子类如果不使用struts自带的错误信息,可以在Action所在的包中定义”Action类名.properties”文件,内容如下:invalid.fieldvalue.inver=整型数组转换出错其中,invalid.fieldvalue固定,inver是属性名称17Struts2的类型转换器类型转换器的开发继承如下类org.apache.struts2.util.StrutsTypeConverter实现如下两个方法:publicObjectconvertFromString(Mapcontext,

String[]values,ClasstoClass)

说明:该方法用于将页面参数字符串转化为指定类型的值,返回值为目标类型的对象。context是ActionContex的实例对象;values是页面传来的参数,toClass是要转换的目标类型的元类对象。publicStringconvertToString(Mapcontext,Objecto)

说明:该方法用于将对象转换为字符串。context是ActionContex的实例对象;o是需要转换的源对象。Struts2的类型转换器自定义时间转换器示例开发转换器Struts2的类型转换器自定义时间转换器示例配置转换器全局的类型转换器在类(源程序文件夹)的根路径下建立文件

perties,为类型java.util.Date配置转换器,其内容如下:java.util.Date=xk.util.DateConverter局部类型转换器:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论