转换器:可以继承的类:DefaultTypeConverter、StrutsTypeConverter其中后者是常用的,继承于前者的
(1) 普通的类型转换:日期(局部类型转换)
DateAction.java代码如下:
package org.study.test.actions;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
public class DateAction extends ActionSupport {
private Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String execute() throws Exception {
System.out.println("-----------"+date+"----------");
return SUCCESS;
}
}
date.jsp中只有一个输入域,输入日期格式的数据
DateAction-conversion.properties
java.util.Date=org.study.test.utils.PointAction
DateConverter.java
package org.study.test.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
public class PointAction extends StrutsTypeConverter {
private static String DATE_TIME_FOMART_IE = "yyyy-MM-dd HH:mm:ss";
private static String DATE_TIME_FOMART_FF = "yy/MM/dd hh:mm:ss";
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
Date date = null;
String dateString = null;
if (values != null && values.length > 0) {
dateString = values[0];
if (dateString != null) {
// 匹配IE浏览器
SimpleDateFormat format = new SimpleDateFormat(DATE_TIME_FOMART_IE);
try {
date = format.parse(dateString);
} catch (ParseException e) {
date = null;
}
// 匹配Firefox浏览器
if (date == null) {
format = new SimpleDateFormat(DATE_TIME_FOMART_FF);
try {
date = format.parse(dateString);
} catch (ParseException e) {
date = null;
}
}
}
}
return date;
}
@Override
public String convertToString(Map context, Object o) {
// 格式化为date格式的字符串
Date date = (Date) o;
SimpleDateFormat sdf = new SimpleDateFormat(DATE_TIME_FOMART_FF);
String dateTimeString = sdf.format(date);
return dateTimeString;
}
}
其中action和actionNames-converter.properties应该在一个目录下
List类型转换:
RegAction.java
package org.study.test.actions;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
public class RegAction extends ActionSupport {
private List<String> username;
public List<String> getUsername() {
return username;
}
public void setUsername(List<String> username) {
this.username = username;
}
@Override
public String execute() throws Exception {
for (String s : username) {
System.out.println(s);
}
return SUCCESS;
}
}
reg.jsp
<s:form action="reg" method="post" >
<s:textfield name="username" label="username"></s:textfield>
<s:textfield name="username" label="username1"></s:textfield>
<s:submit></s:submit>
</s:form>
RegAction-conversion.properties
Element_username = java.lang.String; 其中Element_username 前面是固定的,后面是action中的属性名
注意:此处因为是基本类型的集合数据,所以无需转换器类
Map类型转换
需要注意的是:
(1)指定key类型: Key_ Map类型的属性的属性名=key类型的全限定类名
(2)指定value类型: Element_ Map类型的属性的属性名=value类型的全限定类名
分享到:
相关推荐
这篇博客文章“Struts2类型转换深入总结”将深入探讨这一主题。 在Struts2中,类型转换主要是为了处理HTTP请求中的数据,这些数据通常以字符串形式存在,但可能需要被转换为其他类型,如整型、浮点型、日期等。...
Struts2是一个强大的Java ...总结来说,Struts2的类型转换、拦截器和校验机制是构建健壮、可维护的Java web应用程序的重要工具。理解并熟练运用这些概念,能让你更好地利用Struts2框架,提高开发效率,确保应用的质量。
本文主要介绍Struts1和Struts2中的自定义类型转换器,并探讨其实现机制。 #### 二、Struts1中的自定义类型转换器 在Struts1中,自定义类型转换器主要是通过继承`com.sun.org.apache.commons.beanutils.Converter`...
### Struts2类型转换与验证流程详解 #### Struts2框架概述 Struts2是一个用于构建企业级Java Web应用的强大框架。它集成了MVC设计模式,并提供了丰富的插件支持和灵活的配置选项。在Struts2中,类型转换和验证机制...
总结起来,这个Struts2实例项目通过整合国际化、类型转换和Struts2标签,构建了一个完整的用户管理系统,展示了如何在实际开发中高效地处理Web请求,实现业务逻辑,并提供多语言支持。这样的练习有助于提升开发者对...
### Struts2 数据类型转换详解 #### 一、引言 在Web开发中,特别是使用Struts2框架进行开发时,数据类型转换是一项至关重要的功能。由于Web应用程序的基础通信协议HTTP仅支持字符串形式的数据传输,因此,服务器端...
1. **类型转换**:首先,Struts2框架使用类型转换器将HTTP请求中的字符串参数转换为相应的Java类型,如Integer、Date等,并将这些值设置为Action类的属性。 2. **异常处理与错误封装**:如果类型转换过程中遇到问题...
自定义类型转换器需要实现`org.apache.struts2.util.TypeConverter`接口,或者继承`org.apache.struts2.convention.converters.DefaultConversionProvider`基类,覆盖`convertValue()`方法。然后,通过在Action类或...
总结来说,Struts2的类型转换机制是其核心功能之一,它有效地解决了HTTP请求数据与Action属性之间的类型不匹配问题。理解并掌握Struts2的类型转换,对于提升Java web应用的开发效率和质量具有重要意义。通过学习和...
Struts2允许自定义类型转换器,以便在Action属性和请求参数之间进行数据转换。局部类型转换器针对特定Action类的某个属性,而全局类型转换器则对所有Action类生效。通过实现`Converter`接口或扩展`...
10. **类型转换和插件**:Struts2具有强大的类型转换能力,可以自动将请求参数转换为Action属性。此外,通过插件机制,可以轻松地扩展Struts2的功能,如集成Spring、Hibernate等。 通过深入理解和实践这些知识点,...
在实际项目中,Struts2可以处理类型转换、文件上传下载、拦截器(Interceptor)防止重复提交等问题。Interceptor是Struts2中的重要特性,它允许在Action执行前后插入额外的处理逻辑,如登录验证、日志记录等。深入...
- **优势**:使用 Struts2 可以显著提高开发效率,因为它能够处理很多基础任务,如数据接收、类型转换、验证等。 **1.2 Struts2 架构** - **MVC 架构**:Struts2 采用经典的 MVC 架构,分为模型(Model)、视图(View)...
相比于Struts1,Struts2提供了更强大的功能,包括但不限于拦截器、类型转换、文件上传/下载等。Struts2的核心思想是基于拦截器(Interceptor)的,这种设计使得开发者可以更容易地扩展框架的功能。 ### Struts2与...
- Struts2的类型转换器会尝试将HTTP请求参数转化为Action类中属性的对应类型。 2. **异常处理**: - 在转换过程中如果出现异常,Struts2会将异常信息存储在`ActionContext`中,`conversionError`拦截器会将这些...
`Dispatcher`还负责初始化插件,这些插件可以扩展Struts2的功能,例如类型转换、结果渲染等。 总的来说,Struts2的初始化过程涉及了日志、配置解析、ActionContext管理等多个重要环节,这些都为处理HTTP请求做好了...
个人struts2框架学习后的梳理和总结,内容丰富,从配置文件到action类、result、ognl、类型转换器、国际化、拦截器、表单验证等等内容,还推荐了很多博客链接,有了它自学Struts2框架毫无压力!