Struts2.0框架不能够或者不能完整的进行自动类型转换时采用自定义类型转换
自定义类型转换器
1.开发一个类,extends StrutsTypeConverter
2.配置文件,声明自定义类型转换器
一. 局部的类型转换器:
配置文件的名称: actionName-conversion.properties
配置文件的位置: 和Action放在同一个目录结构当中
配置文件的内容: Action中需要类型转换器的属性=自定义类型转换器的全路径
1.在com.jsu.struts2.action包中写一个类extends StrutsTypeConverter
在DateConverter.java文件中
package com.jsu.struts2.action; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import org.apache.struts2.util.StrutsTypeConverter; public class DateConverter extends StrutsTypeConverter { @Override public Object convertFromString(Map context, String[] values, Class toClass) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); Date d = null; String dateStr = values[0];//用户提交的数据 try { d=sdf.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } return d; } @Override public String convertToString(Map context, Object obj) { Date d =(Date)obj; SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); String dateStr=sdf.format(d); return dateStr; } }
2.reg.jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <center> <form action="add.action" method="post"> userName:<input type="text" name="username"/><br> Age:<input type="text" name="age"/><br> Birthday:<input type="text" name="birthday"/><br> <input type="submit" value="Submit"/> </form> </center> </body> </html>
3.在com.jsu.struts2.action包中写一个Action RegisterAction extends ActionSupport
在RegisterAction.java文件中
package com.jsu.struts2.action; import java.util.Date; import com.opensymphony.xwork2.ActionSupport; public class RegisterAction extends ActionSupport { private String username; private String age; private Date birthday; @Override public String execute() throws Exception { System.out.println(username+" : "+age+" : "+birthday); return SUCCESS; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
4.在和Action同一目录结构当做写配置文件,配置文件命名actionName-conversion.properties
配置文件的内容: Action中需要类型转换器的属性=自定义类型转换器的全路径
在RegisterAction-conversion.properties配置文件中
birthday=com.jsu.struts2.action.DateConverter
5.在struts.xml文件中
<struts> <package name="loginDemo" namespace="/" extends="struts-default"> <action name="add" class="com.jsu.struts2.action.RegisterAction"> <result type="redirect">/reg.jsp</result> </action> </package> </struts>
二、 全局的类型转换器
配置文件的名称: xwork-conversion.properties
配置文件的位置: 在src目录下面
配置文件的内容: 需要进行类型转换的类型=自定义类型转换器的全路径
局部类型转换:只针对某一个Action的某一个属性进行转换
全局类型转换:对所有Action对象中该类型的属性进行转换
在 xwork-conversion.properties配置文件中
java.util.Date=com.jsu.struts2.action.DateConverter
以上其他内容都一样,只改变配置文件
发表评论
-
struts2day06 自定义结果
2012-07-16 12:14 673类implements Result接口 或者 extends ... -
struts2day06 Struts2.0的result
2012-07-16 12:01 950Struts2.0的result Action ... -
struts2day06学习笔记
2012-07-16 10:55 8521.new String(xxx.getBytes(),&qu ... -
struts2day05异常处理
2012-07-13 23:13 833Struts2.0的异常处理机制 1.什么是异常?软件在 ... -
Struts2day05学习笔记
2012-07-13 22:19 6751.自定义拦截器 1.im ... -
Struts2day04Struts2.0文件的下载
2012-07-13 08:26 6761.写一个Action,在DownloadAction ext ... -
Struts2day04Struts2.0文件的上传
2012-07-13 08:20 6501、在服务器端提供一个文件夹存放提交的文件,upload文件夹 ... -
Struts2day04Struts2.0实现阻止表单重复提交
2012-07-12 21:01 6231.使用叫做token的拦截器,在表单中加入<s:tok ... -
Struts2day04对Action的方法进行过滤拦截
2012-07-12 20:38 17811.写一个Action类 UserManagerAction ... -
Struts2day04判断用户是否登录
2012-07-12 19:37 8691.在拦截器中获得用户登录的session 在LoginC ... -
Struts2day04测试程序的执行效率,拦截器栈,在Action中覆盖拦截器的属性值
2012-07-12 18:58 11851.在LoginAction.java中,extends Ac ... -
Struts2学习笔记day04
2012-07-12 00:31 6181.自定义类型转换 1.写一个类 extends S ... -
Struts2day03Struts2.0提供的数据格式校验
2012-07-11 21:52 716Struts2.0提供的数据格式校验 js校验:存在被 ... -
Struts2day03Struts2.0国际化
2012-07-11 21:09 764Struts2.0国际化 B/S结构中为网页提供多国 ... -
Struts2学习笔记day03
2012-07-11 19:09 9471.值栈:ValueStack,存储数 ... -
Struts2day02多个对象提交
2012-07-10 07:15 1187在listUser.jsp页面 <%@ page la ... -
Struts2day02表单标签
2012-07-10 07:15 6651.在struts2Form.jsp中 <%@ ... -
struts2day02访问ValueStack中的数据以及访问Context中的对象
2012-07-10 07:14 10461.在show.jsp页面 <%@ page lang ... -
Struts2day02动态方法调用
2012-07-10 07:14 6521.在opt.jsp页面 <%@ page langu ... -
Struts2day02使用通配符调用指定的方法
2012-07-10 07:14 7291.在opt.jsp页面 <%@ page langu ...
相关推荐
### Struts2自定义类型转换:深入解析与实践 #### 引言 在Web开发中,数据类型转换是一项常见的需求,特别是在用户输入的数据与后端处理的数据类型不一致时。Struts2框架提供了强大的类型转换机制,允许开发者...
Struts2的类型转换是基于OGNL实现的,因此自定义转换器需要实现这个接口。然而,TypeConverter接口的`convertValue`方法比较复杂,通常我们会选择继承`DefaultTypeConverter`类来简化工作。 `DefaultTypeConverter`...
### Struts2的类型转换与OGNL表达式语言 #### 一、Struts2的类型转换类型 在Struts2框架中,类型转换是处理用户输入数据时的一个关键环节。Struts2支持多种内置的数据类型转换,同时也允许开发人员自定义类型转换...
其中,OGNL(Object-Graph Navigation Language)是Struts2中的核心表达语言,用于在视图层与模型层之间传递数据。在深入理解OGNL的源码之前,我们首先需要了解OGNL的基本概念和用法。 OGNL是一种强大的表达式语言...
这个压缩包包含的是OGNL的2版本的源代码,这对于理解Struts2框架的工作原理以及OGNL语言的实现细节非常有帮助。 OGNL的主要功能是提供一种简洁的方式来获取和设置对象的属性,甚至可以处理复杂的对象图。例如,你...
Struts2是一个流行的Java web开发...总之,Struts2的类型转换机制为开发者提供了强大的灵活性和便利性,不仅可以处理基本类型,还能方便地扩展以支持自定义类型和复杂数据结构的转换,从而简化了Web应用的开发工作。
理解并掌握如何利用内置转换器、自定义转换器以及处理转换错误,对于构建高效、稳定的Struts2应用至关重要。通过深入学习Struts2的源码和使用相关工具,我们可以更深入地了解这些机制,并优化我们的应用程序。
OGNL支持自定义类型转换、方法解析器和函数库,允许开发者扩展其功能以适应特定项目需求。 总结,OGNL.jar在Struts2框架中起到了桥梁的作用,连接着业务逻辑、数据模型和视图展示。了解和掌握OGNL的使用不仅能提高...
OGNL(Object-Graph Navigation Language)是Struts2框架中的一个重要组件,用于在Web应用中访问和操作Java对象的属性,调用其方法,以及执行类型转换等操作。 OGNL是对象图导航语言的缩写,它是一种功能强大的...
在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于在视图层和模型层之间进行数据绑定和表达式计算。本文将深入探讨如何在Struts2中有效地使用OGNL表达式。 首先,OGNL是Struts2的...
9. **自定义OGNL标签**:Struts 2提供了许多内置的OGNL标签,如`s:text`、`s:property`等,方便在JSP中使用OGNL表达式。开发者还可以根据需求创建自定义的OGNL标签。 通过阅读“Struts 2中的OGNL.pdf”,你可以深入...
Struts2_OGNL Demo 是一个用于演示Struts2框架中OGNL(Object-Graph Navigation Language)表达式语言的实例。这个项目旨在帮助开发者理解和学习如何在Struts2中使用OGNL来操纵对象和数据。OGNL是Struts2中一个重要的...
Struts2是一个流行的Java web开发框架,而OGNL(Object-Graph Navigation Language)是它用于表达数据绑定和表达式语言的核心组件。在Struts2中,OGNL被广泛用于访问和操作应用程序中的对象属性,包括在请求、参数、...
总的来说,Struts2的类型转换机制为开发者提供了灵活的输入数据处理方式,既可以利用内置转换,也可以自定义转换器以适应复杂的业务场景。正确理解和使用这一机制,可以提高代码的可维护性和用户体验,确保数据的...
在这个“Struts2 OGNL用法项目”中,我们将深入探讨OGNL(Object-Graph Navigation Language),它是Struts2中一个强大的表达式语言,用于在模型对象和视图之间进行数据绑定和表达式计算。 OGNL是Struts2的核心组件...
本教程将深入探讨Struts2的核心概念、JQuery的使用、类型转换以及OGNL表达式语言。 首先,让我们来看看Struts2的基础知识。Struts2是基于Apache的开源项目,它是对早期Struts框架的升级,引入了拦截器模式,提供了...
2. **类型安全**:OGNL在解析表达式时,会自动处理类型转换,避免了运行时错误。 3. **上下文感知**:OGNL能够根据当前上下文查找变量,例如在Struts2中,ActionContext可以作为默认上下文。 4. **动态性**:OGNL...
第四章:Struts2中的OGNL.ppt详细探讨了Struts2框架中使用OGNL(Object-Graph Navigation Language,对象图导航语言)的关键概念和技术。OGNL作为一种强大的表达式语言,使得开发者能够方便地访问Action携带的数据,...
在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置对象属性,它在Struts2的核心组件中扮演着至关重要的角色。本篇文章将深入探讨OGNL在Struts2.0中的应用及其重要性。 ...