Struts2类型转换
1、 struts2内部提供大量类型转换器,用来完成数据类型转换问题
boolean 和 Boolean
char和 Character
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.属性名=错误信息
分享到:
相关推荐
XWork则是Struts2的基础框架,提供了一系列底层功能支持,如类型转换、拦截器机制等。 标题提到的"struts2-core-2.3.32"和"xwork-core-2.3.32"是Struts2框架的重要组成部分。"struts2-core-2.3.32.jar"包含了Struts...
- **类型转换和验证**:Struts2支持自定义类型转换器,可以将用户输入的数据转换为所需的类型;同时还提供了一套强大的验证机制,确保用户输入的数据符合预期格式。 #### 五、Struts2实战经验 - **国际化**:通过...
4. `xwork-core.jar`:XWork是Struts2的基础,提供了类型转换、数据验证等功能。 5. `servlet-api.jar`和`jsp-api.jar`:这些是Servlet和JSP的API库,用于与Web服务器交互。 "docs"目录则包含了详细的文档和教程,...
这篇博客"Struts2返回json -- demo"可能是关于如何在Struts2框架中实现JSON响应的教程。 在Struts2中,返回JSON数据主要依赖于`struts2-json-plugin`插件。首先,你需要确保在你的项目中已经添加了这个插件的依赖。...
在本教程中,我们将深入探讨如何在Struts2中实现自定义类型转换器。 首先,我们需要了解Struts2的类型转换过程。当用户通过表单提交数据时,Struts2会尝试将这些请求参数转换为Action类中对应属性的类型。如果默认...
2. **xwork-core.jar**:XWork是Struts2的基础,它提供了一些基础功能,如类型转换、Ognl表达式支持、拦截器机制等。很多Struts2的功能都是基于XWork实现的。 3. **ognl.jar**:OGNL(Object-Graph Navigation ...
7. **类型转换**:Struts 2提供自动类型转换功能,能够将请求参数自动转换为Action字段的类型,减少了手动类型转换的工作。 在Struts 2.1.8这个版本中,可能包含以下组件和改进: 1. **安全修复**:Struts 2.1.8...
本教程主要探讨Struts2.1源代码中的自定义类型转换器。 1. **类型转换器的作用** 类型转换器是Struts2框架的核心组件之一,其主要任务是将用户的输入(通常是字符串)转换为Action类中声明的字段类型。这在处理...
Struts2还提供了自动的数据类型转换功能,可以将基本类型的数据进行转换,同时允许开发者定义更复杂的转换规则。 #### 结果类型与拦截器 Struts2中的`ResultTypes`定义了不同的结果处理方式,例如可以重定向到另一...
8. **异常处理**:Struts2提供了全局和局部两种异常处理策略,允许开发者定义特定类型的异常如何被转换为特定的结果,实现统一的错误页面展示。 9. **国际化**:通过资源文件,Struts2可以轻松实现多语言支持,让...
通过这些教程,你将掌握Struts2的基本架构、配置、数据绑定以及自定义类型转换等关键知识点,这对于开发基于Struts2的Java web应用来说是非常基础且重要的。同时,了解并熟练运用这些技能,能够帮助你更高效地构建和...
- **Struts2**:通过内置的转换器机制轻松实现数据类型转换。 #### 三、Struts2的开发流程示例 - **添加Struts2支持**: - 在myEclipse中添加Struts2支持,主要是在web.xml中配置过滤器`...
“4 internationalization.pdf”可能会讲解Struts2的国际化支持,如何为应用提供多语言环境,包括资源文件的创建、配置和使用,以及如何在Action和JSP中调用国际化的文本。 “5 converter.pdf”涉及Struts2的转换器...
- **基于Struts2的类型转换器**:使用框架内置的类型转换器。 - **使用OGNL语言来转换类型**:通过OGNL表达式来定义复杂的类型转换逻辑。 **4.2 拦截器应用** - **拦截器的实现原理**:拦截器是一种在Action执行...
总的来说,Struts2通过其无侵入式设计、拦截器、类型转换、灵活的视图支持、强大的验证机制和国际化管理,极大地提升了开发效率和代码质量,使得Java Web开发更加高效和便捷。虽然Struts1为早期的Web开发打下了基础...
9. **类型转换**:Struts 2自动处理HTTP请求参数到Action字段的类型转换,使得开发更便捷。 10. **主题和模板**:Struts 2支持多种主题和模板,用于自定义视图的外观和布局,提高用户体验。 由于这个压缩包不包含...
5. **转换器Converter**:Struts2允许自定义转换器来处理数据类型转换,比如将用户输入的字符串转换为日期或数字,确保数据的正确性和一致性。 6. **表单数据验证**:Struts2提供了强大的内置验证框架,可以在...