`
ITCheng
  • 浏览: 77257 次
  • 来自: 北京
社区版块
存档分类
最新评论

浅谈自定义类型转换器

 
阅读更多

流程:

1.创建一个vo包,用来存放表示层的数据,并且封装成对象保存.

2.创建一个conversion包,用来存放自定义类型转换器

3.配置自定义类型转换器

   a.全局类型转换器

   b.局部Action类型转换器

 

com.sun.vo

里面存放了一个point,point 有2个属性,分别为int x,int y

 

com.sun.conversion

里面存放了一个PointConverter,该类继承了StrutsTypeConverter

package com.sun.conversion;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

import com.sun.entity.Point;

public class PointConverter extends StrutsTypeConverter{

	@Override
	public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
		String str=arg1[0];
		String point[]=str.split(",");
		Point p=new Point();
		p.setX(Integer.parseInt(point[0]));
		p.setY(Integer.parseInt(point[1]));
		return p;
	}

	@Override
	public String convertToString(Map arg0, Object arg1) {
		Point p=(Point) arg1;
		return "x:"+p.getX()+"y:"+p.getY();
	}
	
}

 局部配置文件定义PointAction-conversion.properties

 属性名称=转换器的位置

  point=com.sun.conversion.PointConverter

 

===========================================

 

下面是日期转换器的定义

package edu.accp.conversion;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

public class DateConverter extends StrutsTypeConverter {

	SimpleDateFormat[] sdf = { new SimpleDateFormat("yyyy-MM-dd"),
			new SimpleDateFormat("yyyy年MM月dd"),

			new SimpleDateFormat("yyyy/MM/dd") };

	@Override
	public Object convertFromString(Map arg0, String[] values, Class arg2) {
		Date time=null;
		for (SimpleDateFormat s : sdf) {
			try {

				time=s.parse(values[0]);
                break;
			} catch (Exception e) {
				continue;
			}
		}
		return time;
	}

	@Override
	public String convertToString(Map arg0, Object obj) {
		SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd");
		return s.format(obj);
	}

}

 

 

 

 全局的配置文件设置为xwork-conversion.properties

 属性名称=转换器的位置

  java.util.Date=com.sun.conversion.DateConverter

分享到:
评论

相关推荐

    浅谈jvm原理

    "浅谈 JVM 原理" JVM(Java Virtual Machine)是一种虚拟机,它可以模拟完整的硬件系统功能,运行在一个完全隔离的环境中,提供了一个完整的计算机系统。JVM 可以分为三类:VMWare、Visual Box 和 JVM。其中,...

    浅谈oracle xml publisher 功能与使用

    它能够从Oracle数据库中提取数据,并通过自定义的模板来呈现这些数据,从而生成高质量的报表、发票、信件等。 #### 二、测试环境 本文档基于以下环境进行测试: - **应用环境**:Oracle E-Business Suite (EBS) ...

    浅谈javascript中自定义模版

    `getByClass`函数用于根据class属性获取页面中的元素,它不仅支持直接调用`getElementsByClassName`方法,还兼容了老版本的IE浏览器。而`addSheetFile`函数则是为动态添加外部样式表提供了一个简便的实现方式。 在...

    浅谈Datafactory

    **标题:“浅谈Datafactory”** Datafactory是一个强大的数据处理工具,它允许用户构建、部署和管理数据集成工作流。这个工具的核心理念是提供一个灵活的平台,以便于在不同的数据源之间移动、转换和清洗数据,从而...

    浅谈pytorch grad_fn以及权重梯度不更新的问题

    在问题排查过程中,作者在将Variable转换为Tensor时错误地设置了requires_grad参数,后来发现问题在于应该调整target的尺寸,以适应train_pred。 6. 解决方案和最佳实践 文档最终给出了解决方案,即直接将model...

    浅谈gui框架

    1. **消息发送者(message sender)**:在Windows中,操作系统是消息发送者,它将用户的输入转换成消息并放入应用程序的消息队列。例如,当用户点击鼠标时,系统会产生一个消息,并将其发送到目标窗口的队列。 2. *...

    浅谈JAVA集合框架及其应用.zip

    `TreeMap`按照键的自然排序或自定义比较器排序;`LinkedHashMap`则保持元素的插入顺序或者访问顺序。 Java集合框架还包括了一些其他接口和类,如`Queue`(队列)、`Deque`(双端队列)、`PriorityQueue`(优先队列...

    浅谈在Windows Phone 7 中ListBox的使用

    2. 避免使用复杂的转换器(Converter),因为它们可能导致性能下降。 3. 不要在ListBox内部嵌套另一个ListBox,这将增加内存消耗和计算复杂性。 4. 尽量不使用用户控件(UserControl)在DataTemplate中,因为它们...

    浅谈Spring的属性编辑器的使用

    如果需要自定义转换逻辑,可以创建一个实现了`PropertyEditor`接口的类,并在Spring配置中注册它,或者通过`@Component`注解使其成为Spring管理的bean。 总的来说,Spring的属性编辑器是连接配置文件和JavaBean属性...

    浅谈FPGA在数字信号处理中的应用.pdf

    天馈分机负责将高频雷达微波信号变频为中频信号,然后通过高速A/D变换器将其转换为数字信号,再由FPGA进行数字信号处理,最终通过D/A变换器将处理后的数字信号转换成模拟信号输出。 全球知名的FPGA生产厂商包括...

    浅谈智能视频分析系统的设计与实现.pdf

    XML生成器则将分析结果转换为XML格式,便于数据交换和处理。 系统软件实现分为智能视频分析模块和视频编码与发送模块。前者负责接收原始视频,进行解复用、智能分析和规则应用,后者则通过DSP进行H.264编码,利用...

    浅谈Android开发系列网络篇之Retrofit

    Retrofit支持自定义数据转换器,如GsonConverter、JacksonConverter等,以便于处理不同格式的服务器响应数据。在示例中,`listRepos` 方法直接返回了 `List<Repo>` 类型,这是因为Retrofit默认使用Gson将JSON数据...

    浅谈springMVC接收前端json数据的总结

    总结来说,Spring MVC提供了强大的功能来接收和处理JSON数据,这涉及到请求映射、数据绑定、消息转换器等多个方面。开发者需要了解这些机制,以便有效地在Web应用中处理JSON数据。在开发过程中,也需要注意各种异常...

    浅谈java中的TreeMap 排序与TreeSet 排序

    在第二个示例中,创建了一个 `TreeSet` 并传入了一个自定义的 `Comparator`,这个比较器用于比较 `Object` 类型的值,将其转换为整数并进行比较,以实现倒序排序。当添加元素到 `TreeSet` 中时,它们会根据比较器的...

    浅谈.Net下的多线程和并行计算(全集).pdf

    PLINQ结合了LINQ查询的简洁性和并行计算的性能优势,允许开发者在不改变原始查询结构的情况下,轻松地将查询转换为并行执行。 并发和并行虽然经常一起使用,但两者之间存在区别。并发是指多个线程在一段时间内交替...

    浅谈django model postgres的json字段编码问题

    在Python的Django框架中,PostgreSQL数据库是一个广泛使用的存储后端,因为它提供了丰富的...通过自定义或利用现有的高级编码器,如DRF的JSONEncoder,可以确保我们的应用程序能够稳定、高效地处理各种复杂的数据类型。

    浅谈vue中使用编辑器vue-quill-editor踩过的坑

    另外,`addQuillTitle`可能是一个自定义工具,用于在富文本编辑器中添加标题,它可能是一个单独的工具函数,用于处理标题样式或操作。 在CSS导入部分,我们包含了`quill.core.css`, `quill.snow.css` 和 `quill....

    浅谈react+es6+webpack的基础配置

    `module.rules`数组里的规则定义了如何处理不同类型的模块,这里我们配置了处理.js和.jsx文件的规则,使用`babel-loader`进行转换,同时指定`@babel/preset-env`和`@babel/preset-react`预设,以便支持ES6和React...

Global site tag (gtag.js) - Google Analytics