第_章Struts的高级应用技术回顾.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第_章Struts的高级应用技术回顾.ppt

第2章 Struts 2的高级应用技术回顾 1、类型转换 2、校验框架 3、国际化 4、文件的上传与下载 2.1 类型转换 在所有的基于Web的Java开发框架中,Struts2拥有最优秀的类型转换能力。通常情况下,要利用这种能力,只需要把HTML输入项(表单元素和其他GET/POST的参数)命名为合法的OGNL表达式。 在Web世界中输入输出是没有数据类型的概念的,任何数据都被当作字符串或字符串数组来传递。如果需要转化为其他类型(如int)进行计算就要使用Java的转换函数. Struts2提供了如下类型转换: 简单类型转换(如int、boolean、double类型) 日期类型转换 集合类型转换 2.1.1 内建的(Built in)类型转换 Struts2可以自动完成大多数常用的类型转换。已支持的与字符串之间转换类型包括: String boolean/Boolean char/Character int/Integer、float/Float、long/Long、double/Double。 dates:使用当前request指定的Locale信息对应的SHORT格式。 arrays:假定每一个字符串都能够转换成对应的数组元素。 collections:如果不能确定对象类型, 将假定集合元素类型为String, 并创建一个新的ArrayList。 2.1.2 集合类型转换 Struts2可以支持Collection和Map类型的支持; 提供的集合类型转换器为开发者节省了大量的编码工作,提高了工作效率。 Struts2提供的内置转换器基本可以满足日常开发需要。开发者可以自定义类型转换器。 类型转化器都需要实现ognl.TypeConverter类 2.1.3 空值属性处理 Struts2还有一些非常有用的类型转换特性。对空值(Null)属性的处理可以在发现空值引用时自动创建对象。 如果属性声明为Collection或List,将返回一个ArrayList并赋值给空引用 如果属性声明为Map, 将返回一个HashMap并赋值给空引用. 如果空值属性是一个带有无参构造函数的简单Bean, 将使用ObjectFactory.buildBean(java.lang.Class, java.util.Map)方法创建一个实例 通过把action context中的键值 CREATE_NULL_OBJECTS 设置为true支持空值处理。 这样,出现NullPointerException异常的OGNL表达式将被自动临时中断,然后系统将通过创建所需对象的方法来自动尝试解决null引用ActionContext?invocationContext?=invocation.getInvocationContext();?? invocationContext.put(?? InstantiatingNullHandler.CREATE_NULL_OBJECTS,?? Boolean.TRUE);? 2.1.4 类型转换错误处理 在类型转换发生错误时,有时希望报告这些错误,而有时不希望报告。例如,报告输入的“abc”不能转换成数字可能很重要。另一方面,报告一个空字符串(“”)不能装换成数字可能不重要。除非是在一个Web环境下,难以区分用户没有输入还是输入了一个空白值。 缺省情况下,所有的转换错误使用通用的i18n信息struts.default.invalid.fieldvalue,可以在全局il8n资源包中替换它(缺省文本是Invalid field value for field xxx,这里xxx是字段名称)。 如果替换每个字段的信息,在action的资源文件中添加invalid.fieldvalue.xxx,xxx是字段名 2.2 校验(Validation)框架 校验表单对于防止不正确的数据进入应用程序是必不可少的。最好是尽可能捕获用户输入数据的问题,告诉用户发生了什么错误,以及他们如何来修整它,这个一个用户友好系统的检验尺度。 如果用户输入的数据是不能正确格式化并且不能正确转好到此属性的格式的时候,这个问题会被在“类型转化”一章中介绍的类型转换框架捕获. 2.2.1 手动校验 最直接的校验表单数据的方式就是在action里编写校验代码。这个方法的问题是限制了复用,因为校验被限制的action类里,不容易在action之间或者应用程序的其他部分服用。但是在一些情况下,一些负责的商业逻辑可能必须也只能在action类中实现,也就是说手动校验可能是最后的选择。 “acton的基本校验”一节已经介绍了如何利用Validateable接口的validate()方法来

文档评论(0)

整理王 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档