`
SIHAIloveYAN
  • 浏览: 119924 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

struts2教程(4)--类型转换

 
阅读更多

Struts2类型转换

1struts2内部提供大量类型转换器,用来完成数据类型转换问题

boolean Boolean

charCharacter

int Integer

long Long

float Float

double Double

Date 可以接收yyyy-MM-dd格式字符串

数组 可以将多个同名参数,转换到数组中

集合 支持将数据保存到 List或者 Map集合

案例: 输入合法年龄和生日可以自动转换

当输入abc 转换为 int类型age

Caused by: java.lang.NoSuchMethodException: cn.itcast.struts2.demo3.CustomerAction.setAge([Ljava.lang.String;

分析: 输入20,转换 int类型20 --- setAge(int)

输入abc,转换int出错 ---- setAge(String) -----报错方法不存在异常


自定义类型转换器

1) 自定义类型转换器

第一种 实现TypeConverter接口

convertValue(java.util.Map<java.lang.String,java.lang.Object> context, java.lang.Object target, java.lang.reflect.Member member, java.lang.String propertyName, java.lang.Object value, java.lang.Class toType) 


第二种 继承 DefaultTypeConverter

convertValue(java.util.Map<java.lang.String,java.lang.Object> context, java.lang.Object value, java.lang.Class toType) 


第三种 继承 StrutsTypeConverter

	convertFromString(java.util.Map context, java.lang.String[] values, java.lang.Class toClass)  --- 请求封装

convertToString(java.util.Map context, java.lang.Object o)   --- 数据回显 


类型转换器 一直都是双向转换

页面提交请求参数,封装到model --- 需要转换

model数据 需要在页面 回显 ----需要转换


2) 以 1990/10/10为例,自定义日期转换器,完成转换

	public Object convertValue(Map<String, Object> context, Object value,

Class toType) {

// 根据toType判断 是请求封装 还是 数据回显

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");

if (toType == Date.class) {

// 请求参数封装 (value是字符串)

String[] params = (String[]) value;

String strVal = params[0]; // 转换为 日期类型

try {

return dateFormat.parse(strVal);

} catch (ParseException e) {

e.printStackTrace();

}

} else {

// 回显(value是 Date)

Date date = (Date) value;

return dateFormat.format(date);

}

 

return null;

}



3) 注册类型转换器

局部注册 只对当前Action有效 (针对属性)

全局注册 针对所有Action的日期类型有效 (针对类型 )

局部注册 Action类所在包 创建 Action类名-conversion.properties ,格式 : 属性名称=类型转换器的全类名

全局注册 src下创建 xwork-conversion.properties,格式 : 待转换的类型=类型转换器的全类名


类型转换错误处理

通过分析拦截器作用,得知当类型转换出错时,自动跳转input视图 ,在input视图页面中<s:fieldError/> 显示错误信息

Action所在包中,创建ActionName.properties,在局部资源文件中配置提示信息 :invalid.fieldvalue.属性名=错误信息

分享到:
评论

相关推荐

    struts2-core-2.3.32和xwork-core-2.3.32

    XWork则是Struts2的基础框架,提供了一系列底层功能支持,如类型转换、拦截器机制等。 标题提到的"struts2-core-2.3.32"和"xwork-core-2.3.32"是Struts2框架的重要组成部分。"struts2-core-2.3.32.jar"包含了Struts...

    Struts2视频教程

    - **类型转换和验证**:Struts2支持自定义类型转换器,可以将用户输入的数据转换为所需的类型;同时还提供了一套强大的验证机制,确保用户输入的数据符合预期格式。 #### 五、Struts2实战经验 - **国际化**:通过...

    struts2.3.1.2-all

    4. `xwork-core.jar`:XWork是Struts2的基础,提供了类型转换、数据验证等功能。 5. `servlet-api.jar`和`jsp-api.jar`:这些是Servlet和JSP的API库,用于与Web服务器交互。 "docs"目录则包含了详细的文档和教程,...

    Struts2返回json -- demo

    这篇博客"Struts2返回json -- demo"可能是关于如何在Struts2框架中实现JSON响应的教程。 在Struts2中,返回JSON数据主要依赖于`struts2-json-plugin`插件。首先,你需要确保在你的项目中已经添加了这个插件的依赖。...

    Struts2 自定类型转换器(三十四)

    在本教程中,我们将深入探讨如何在Struts2中实现自定义类型转换器。 首先,我们需要了解Struts2的类型转换过程。当用户通过表单提交数据时,Struts2会尝试将这些请求参数转换为Action类中对应属性的类型。如果默认...

    struts2jar包

    2. **xwork-core.jar**:XWork是Struts2的基础,它提供了一些基础功能,如类型转换、Ognl表达式支持、拦截器机制等。很多Struts2的功能都是基于XWork实现的。 3. **ognl.jar**:OGNL(Object-Graph Navigation ...

    struts-2.1.8jar包

    7. **类型转换**:Struts 2提供自动类型转换功能,能够将请求参数自动转换为Action字段的类型,减少了手动类型转换的工作。 在Struts 2.1.8这个版本中,可能包含以下组件和改进: 1. **安全修复**:Struts 2.1.8...

    传智播客struts2.1源代码_自定义类型转换器

    本教程主要探讨Struts2.1源代码中的自定义类型转换器。 1. **类型转换器的作用** 类型转换器是Struts2框架的核心组件之一,其主要任务是将用户的输入(通常是字符串)转换为Action类中声明的字段类型。这在处理...

    Struts2 英文教程

    Struts2还提供了自动的数据类型转换功能,可以将基本类型的数据进行转换,同时允许开发者定义更复杂的转换规则。 #### 结果类型与拦截器 Struts2中的`ResultTypes`定义了不同的结果处理方式,例如可以重定向到另一...

    struts2 教程 讲义.(pdf)

    8. **异常处理**:Struts2提供了全局和局部两种异常处理策略,允许开发者定义特定类型的异常如何被转换为特定的结果,实现统一的错误页面展示。 9. **国际化**:通过资源文件,Struts2可以轻松实现多语言支持,让...

    传智播客struts2教程

    通过这些教程,你将掌握Struts2的基本架构、配置、数据绑定以及自定义类型转换等关键知识点,这对于开发基于Struts2的Java web应用来说是非常基础且重要的。同时,了解并熟练运用这些技能,能够帮助你更高效地构建和...

    Struts2教程(完整)

    - **Struts2**:通过内置的转换器机制轻松实现数据类型转换。 #### 三、Struts2的开发流程示例 - **添加Struts2支持**: - 在myEclipse中添加Struts2支持,主要是在web.xml中配置过滤器`...

    struts2教程pdf清晰版

    “4 internationalization.pdf”可能会讲解Struts2的国际化支持,如何为应用提供多语言环境,包括资源文件的创建、配置和使用,以及如何在Action和JSP中调用国际化的文本。 “5 converter.pdf”涉及Struts2的转换器...

    struts2教程我在培训时用的

    - **基于Struts2的类型转换器**:使用框架内置的类型转换器。 - **使用OGNL语言来转换类型**:通过OGNL表达式来定义复杂的类型转换逻辑。 **4.2 拦截器应用** - **拦截器的实现原理**:拦截器是一种在Action执行...

    struts2入门教程(PPT)

    总的来说,Struts2通过其无侵入式设计、拦截器、类型转换、灵活的视图支持、强大的验证机制和国际化管理,极大地提升了开发效率和代码质量,使得Java Web开发更加高效和便捷。虽然Struts1为早期的Web开发打下了基础...

    struts-2.3.15.3-all.zip

    9. **类型转换**:Struts 2自动处理HTTP请求参数到Action字段的类型转换,使得开发更便捷。 10. **主题和模板**:Struts 2支持多种主题和模板,用于自定义视图的外观和布局,提高用户体验。 由于这个压缩包不包含...

    struts2教程word文档格式

    5. **转换器Converter**:Struts2允许自定义转换器来处理数据类型转换,比如将用户输入的字符串转换为日期或数字,确保数据的正确性和一致性。 6. **表单数据验证**:Struts2提供了强大的内置验证框架,可以在...

Global site tag (gtag.js) - Google Analytics