- 浏览: 89553 次
文章分类
最新评论
数据类型转换器
一为什么要使用转换器
首先struts2通过request.getParameter("");获取String数据,并通过拦截器将
String转换为各种常用的数据类型。但这些Struts2默认的转换器并不总是满足
需求。
二我们自己编写的类型拦截器
的说明详见
http://www.opensymphony.com/ognl/api/ognl/DefaultTypeConverter.html
三编写相应拦截器之后,我们必须配置转换器
DateTimeConvertor去进行转换。我们在Action中不需要进行任何的处理,我们
只需要声明相应的类型,转换器会自动进行调用。
2.java.util.Date java.sql.Date区别
http://www.cnblogs.com/lvjianjun/archive/2010/08/24/1807501.html
四编写配置文件和其他页面
1
2
的action类的方法,而不是通过动态方法或其他方法调用.
3
4
5
用*.action,也就是针对所有后缀为.action的页面执行过滤,但是如果我们在
其他非action后缀的页面中使用struts标签的话就会发生问题,这是由于struts
标签需要struts的过滤器进行处理。
有关类型转换器的知识可见
http://blog.csdn.net/q3498233/article/details/7074095或者
http://blog.163.com/zhangfei_jiayou/blog/static/56244178200982622041863/
一为什么要使用转换器
首先struts2通过request.getParameter("");获取String数据,并通过拦截器将
String转换为各种常用的数据类型。但这些Struts2默认的转换器并不总是满足
需求。
二我们自己编写的类型拦截器
package com.MyStruts2Test.convertor; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Map; import ognl.DefaultTypeConverter; public class DateTimeConvertor extends DefaultTypeConverter{ private DateFormat [] dateFormat = { new SimpleDateFormat("yyyy-MM-dd"), new SimpleDateFormat("yyyy/MM/dd"), new SimpleDateFormat("yy-MM-dd") }; private DateFormat [] timeFormat = { new SimpleDateFormat("HH:mm:ssss"), new SimpleDateFormat("HH:mm") }; public Object convertValue(Map context,Object value,Class toType){ if(toType.equals(java.sql.Date.class)){ String [] parameterValues = (String [])value; for(DateFormat format:dateFormat){ try{ return new java.sql.Date (format.parse(parameterValues[0]).getTime()); }catch(ParseException e){ } } }else if(toType.equals(java.sql.Time.class)){ String [] parameterValues = (String [])value; for(DateFormat format:timeFormat){ try{ return new java.sql.Time (format.parse(parameterValues[0]).getTime()); }catch(ParseException e){ } } }else if(toType.equals(java.util.Date.class)){ String [] parameterValues = (String [])value; for(DateFormat format:dateFormat){ try{ return format.parse (parameterValues[0]); }catch(ParseException e){ } } }else if(toType.equals(String.class)){ if (value instanceof java.sql.Date){ }else if(value instanceof java.sql.Time){ }else if(value instanceof java.util.Date){ return dateFormat[0].format ((java.util.Date)value); } } return super.convertValue(context, value, toType); } }
convertValue(Map context, Object value, Class toType)
的说明详见
http://www.opensymphony.com/ognl/api/ognl/DefaultTypeConverter.html
三编写相应拦截器之后,我们必须配置转换器
java.sql.Date=com.MyStruts2Test.convertor.DateTimeConvertor java.sql.Time=com.MyStruts2Test.convertor.DateTimeConvertor java.util.Date=com.MyStruts2Test.convertor.DateTimeConvertor以及Action
package com.MyStruts2Test.action; import java.sql.Date; import java.sql.Time; import com.opensymphony.xwork2.ActionSupport; public class ConverterAction extends ActionSupport{ private Date sqlDate; private Time sqlTime; private java.util.Date utilDate; public String execute(){ return INPUT; } public String convert(){ return SUCCESS; } public Date getSqlDate() { return sqlDate; } public void setSqlDate(Date sqlDate) { this.sqlDate = sqlDate; } public Time getSqlTime() { return sqlTime; } public void setSqlTime(Time sqlTime) { this.sqlTime = sqlTime; } public java.util.Date getUtilDate() { return utilDate; } public void setUtilDate(java.util.Date utilDate) { this.utilDate = utilDate; } }1这里的意思就是如果我们要转换到java.sql.Date类型,我们就要使用类
DateTimeConvertor去进行转换。我们在Action中不需要进行任何的处理,我们
只需要声明相应的类型,转换器会自动进行调用。
2.java.util.Date java.sql.Date区别
http://www.cnblogs.com/lvjianjun/archive/2010/08/24/1807501.html
四编写配置文件和其他页面
1
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name = "converter" extends = "struts-default" namespace = "/converter"> <action name = "converter" class = "com.MyStruts2Test.action.ConverterAction"> <result name = "input">converter.jsp</result> <result name= "success">success.jsp</result> </action> </package> </struts>
2
<body> This is my JSP page. <br> <s:form action = "converter"> <s:label label = "转换器"/><br> <s:textfield name = "sqlDate" label = "SQL Date:"/><br> <s:textfield name = "sqlTime" label = "SQL Time:"/><br> <s:textfield name = "utilDate" label = "Util Date:"/><br> <s:submit value = "提交" method = "convert"/> </s:form> </body>注意这里的<s:submit value = "提交" method = "convert"/>,它会调用相应
的action类的方法,而不是通过动态方法或其他方法调用.
3
<body> This is my JSP page. <br> java.sql.Date:<s:property value = "sqlDate"/><br> java.sql.Time:<s:property value = "sqlTime"/><br> java.util.Date:<s:property value = "utilDate"/><br> </body>
4
<body> This is my JSP page. <br> <a href = "<s:url action = "converter" namespace = "/converter"/>">ConverterTest</a> </body>
5
<welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping></web-app>特别要注意一个以前没发现的问题,如果我们这里的urlpattern不使用/*,而使
用*.action,也就是针对所有后缀为.action的页面执行过滤,但是如果我们在
其他非action后缀的页面中使用struts标签的话就会发生问题,这是由于struts
标签需要struts的过滤器进行处理。
有关类型转换器的知识可见
http://blog.csdn.net/q3498233/article/details/7074095或者
http://blog.163.com/zhangfei_jiayou/blog/static/56244178200982622041863/
- MyStruts2Test.rar (7.2 MB)
- 下载次数: 1
发表评论
-
开发者突击的配套Struts2SpringHibernate集成项目学习笔记2
2012-09-20 20:23 899开发者突击SSH2OA项目学习笔记,这里的登陆注册界面和之前学 ... -
用SSH2简单实现了用户注册登录删除功能
2012-09-08 22:19 3156第一次尝试把SSH2整合起来,这里记下编写当中遇到的问题和自己 ... -
开发者突击的配套Struts2SpringHibernate集成项目学习笔记1
2012-08-29 10:35 1173学习开发者突击的配套Struts2SpringHibernat ... -
struts2项目无法正确启动Tomcat的问题学习笔记
2012-07-28 20:59 947struts2项目无法正确启动Tomcat的问题学习笔记 第 ... -
struts2自带项目showcase的Action Chaining学习笔记
2012-07-26 20:40 0struts2自带项目showcase的A ... -
struts2自带项目showcase的tags学习笔记
2012-07-26 20:31 727struts2自带项目showcase的tags学习笔记 第 ... -
struts2自带项目showcase的CRUD功能学习笔记
2012-07-23 17:00 0struts2自带项目showcase的CRUD功能学习笔记 ... -
struts2自带项目showcase的fileupload与filedownload功能学习笔记
2012-07-23 14:59 1092struts2自带项目showcase的fileupload功 ... -
struts2框架自带项目struts2-mailreader学习笔记
2012-07-17 21:24 1285struts2框架自带项目struts2-mailreader ... -
【转】Struts2的Action配置的各项默认值
2012-07-09 18:54 8241、Action配置的各项默认值 如果没有为action指 ... -
【转】Struts2中的OGNL表达式
2012-07-09 16:22 0转自http://blog.csdn.net/jady ... -
十步走完一个小的Struts2实例
2012-07-07 20:31 718初学Struts2,先实践一个小的例子。 一、先建立一个工程, ...
相关推荐
Struts2框架内置了一套完善的数据类型转换机制,同时也提供了扩展机制供开发者根据需求定制类型转换器。 #### 二、Struts2数据类型转换的意义 在Struts2中,数据类型转换的意义主要体现在以下几个方面: 1. **...
Struts2通过自定义类型转换器,能够自动将这些字符串转换为相应的数据类型。 在描述中提到的博客链接(由于实际无法访问,以下内容基于Struts2类型转换器的通用知识)通常会详细解释如何创建和注册自定义类型转换器...
这就是"struts2自定义类型转换器"的主题。 首先,理解Struts2的类型转换机制。当Struts2接收到HTTP请求时,它会尝试将请求参数与Action类的属性进行绑定。这个过程涉及到了类型转换,Struts2内置了一套转换器机制,...
创建自定义数据类型转换器需要实现`org.apache.struts2.util.TypeConverter`接口。这个接口包含了一个核心方法`convertValue()`,该方法负责将接收到的值转换为目标类型。我们还需要在类上添加`@Override`注解以确保...
Struts框架为了更好地处理这种类型转换的需求,提供了自定义类型转换器的功能,使得开发者能够更加灵活地控制数据类型转换的过程。本文主要介绍Struts1和Struts2中的自定义类型转换器,并探讨其实现机制。 #### 二...
在Struts2框架中,自定义类型转换器是开发者为了满足特定需求,对框架默认的类型转换机制进行扩展的一种方式。Struts2允许我们创建自己的转换器类来处理输入数据,确保模型对象的属性能够正确地被转换为预期的数据...
Struts2内置了一些常见的类型转换器,如StringConverter、IntegerConverter、LongConverter等,可以处理基本类型的转换。如果这些内置转换器无法满足需求,开发者可以通过实现Converter接口自定义转换器。自定义转换...
这个压缩包“struts2 全局类型转换器.rar”可能包含了一个示例或教程,教你如何在Struts2中实现全局类型转换器,以统一处理不同类型的字段转换。在Struts2中,类型转换器扮演着重要的角色,它允许你将用户输入的数据...
类型转换器是Struts2框架中的一个重要组件,用于在Action类的属性与HTTP请求参数之间进行数据类型的转换。本授课教案和例子源码将深入探讨这一主题,帮助你更好地理解和应用Struts2的类型转换器。 在第一课时中,...
自定义类型转换器是Struts 2的核心特性之一,允许开发者根据业务需求定制数据转换规则。以下将详细介绍如何创建、注册以及使用自定义类型转换器。 1. **创建自定义类型转换器** - 创建一个类,实现`org.apache....
总的来说,Struts2的类型转换器机制为处理复杂数据类型提供了便利,使得我们可以根据需求自由定制数据转换逻辑,保证了从HTTP请求到业务逻辑处理之间的数据一致性。通过自定义类型转换器,我们可以更好地控制数据...
首先,了解Struts2中的类型转换器。Struts2框架提供了内置的转换器,可以处理基本类型和某些复杂类型的转换。然而,对于自定义格式或特殊需求,我们需要自定义转换器。转换器的实现基于`Converter`接口,该接口包含...
通过运行这个实例,初学者可以了解到Struts2如何处理数据类型转换,以及如何在实际项目中应用。此外,这也是理解Struts2框架工作原理和MVC模式的一个好起点。在深入学习Struts2的过程中,你还会遇到拦截器...
在Struts2中,类型转换器(TypeConverter)扮演着关键角色,它负责将HTTP请求参数转换为Action类中相应属性的正确数据类型。本教程主要探讨Struts2.1源代码中的自定义类型转换器。 1. **类型转换器的作用** 类型...
在这个案例中,我们将深入探讨Struts2中的ConverterType,以及如何实现一个自定义的类型转换器来处理坐标(x,y)的数据。 首先,了解Struts2的类型转换机制。默认情况下,Struts2会根据Action类中属性的数据类型...
创建自定义类型转换器时,可以继承Struts2提供的StrutsTypeConverter类,它提供了一些便利的方法来简化转换逻辑。例如,你可以重写convertFromString和convertToString方法,根据业务需求处理字符串到目标类型和目标...
Struts2框架提供了强大的类型转换机制,允许开发者自定义类型转换器,以满足特定业务逻辑的需求。本文将深入探讨Struts2自定义类型转换的原理、分类以及具体实施步骤,帮助开发者更好地理解和应用这一功能。 #### ...