`

castor Date date-format

 
阅读更多

TODO

 

package mytest.utils.castor;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

import org.exolab.castor.mapping.ConfigurableFieldHandler;
import org.exolab.castor.mapping.GeneralizedFieldHandler;
import org.exolab.castor.mapping.ValidityException;

public class DateFieldHandlerImpl extends GeneralizedFieldHandler implements ConfigurableFieldHandler {

	private SimpleDateFormat formatter;

	public void setConfiguration(Properties config) throws ValidityException {
		String pattern = config.getProperty("date-format");
		if (pattern == null) {
			throw new ValidityException("Required parameter \"date-format\" is missing for FieldHandlerImpl.");
		}
		try {
			formatter = new SimpleDateFormat(pattern);
		} catch (IllegalArgumentException e) {
			throw new ValidityException("Pattern \"" + pattern + "\" is not a valid date format.");
		}
	}

	@Override
	public Object convertUponGet(Object value) {
		if (value == null)
			return null;
		
		Date date = (Date) value;
		return formatter.format(date);
	}

	@Override
	public Object convertUponSet(Object value) {

		Date date = null;
		try {
			date = formatter.parse((String) value);
		} catch (ParseException px) {
			throw new IllegalArgumentException(px.getMessage());
		}
		
		return date;
	}

	@Override
	public Class getFieldType() {

		return Date.class;
	}

}

 

import java.util.Date;

public class TestBean {
	
	private Date d1;
	private Date d2;
	
	//setter and gettter
	
}

 

<?xml version="1.0"?>
<mapping>

	<field-handler name="handler1" class="mytest.utils.castor.DateFieldHandlerImpl">
		<param name="date-format" value="yyyyMMdd" />
	</field-handler>

	<field-handler name="handler2" class="mytest.utils.castor.DateFieldHandlerImpl">
		<param name="date-format" value="yyyyMMddHHmmss" />
	</field-handler>

	<class name="mytest.TestBean">

		<field name="d1" type="string" handler="handler1">
			<bind-xml name="D1" node="element" />
		</field>

		<field name="d2" type="string" handler="handler2">
			<bind-xml name="D2" node="element" />
		</field>

	</class>

</mapping>

注意: field-handler不能共享 

在多线程下使用DateFieldHandlerImpl,formatter好像有问题,放到方法中

 

 参考http://castor.codehaus.org/xml-fieldhandlers.html

分享到:
评论

相关推荐

    Castor (二) -- 自定义映射

    在IT行业中,当我们谈论“Castor(二)-- 自定义映射”时,这通常涉及到一个数据绑定框架,即Castor。Castor是一个Java库,它允许开发人员将XML文档和Java对象之间进行映射,从而实现数据的序列化和反序列化。这种...

    castor-xml-1.3.2.jar

    Unmarshall与Marshall使用的castor-xml-1.3.2.jar包

    castor-0.9.5.3-xml.jar

    castor-0.9.5.3-xml.jar,java和xml互相转换所使用的JAR

    castor-1.2-xml-schema castor转化XML需要的jar包

    Castor 项目采用 BSD 类型的证书,因此可在任何类型的应用程序(包括完整版权的项目)中使用。 Castor 实际上仅仅有 XML 数据绑定,它还支持 SQL 和 LDAP 绑定

    castor-1.2系列.rar

    castor-1.2.jar castor-1.2-anttasks.jar castor-1.2-codegen.jar castor-1.2-ddlgen.jar castor-1.2-jdo.jar castor-1.2-xml-schema.jar castor-1.2-xml.jar

    castor-1.0-xml.jar

    org.exolab.castor.types.Date org.exolab.castor.types.GDay org.exolab.castor.types.Time org.exolab.castor.types.Year org.exolab.castor.util.Stack org.castor.util.Base64Decoder org.castor.util.Base64...

    Castor应用示例代码-1

    Castor是一款开源的Java库,它提供了一个强大的对象到XML数据绑定工具,使得开发者能够方便地将Java对象序列化为XML文档,或者从XML文档反序列化为Java对象。这个"Castor应用示例代码-1"是针对《Castor功能与应用...

    解决Castor使用时根节点问题

    Castor,全称为Java Content Repository (JCR) API的实现之一,它是一个强大的Java对象到XML数据绑定库,常用于将Java对象序列化为XML,或者反序列化XML到Java对象。在处理XML数据时,根节点是XML文档中至关重要的...

    castor实现xsd生成javabean所需jar

    java -classpath D:\xsd/castor-1.2-anttasks.jar;D:\xsd/castor-1.2-codegen.jar;D:\xsd/commons-logging-1.1.jar;D:\xsd/castor-1.2-ddlgen.jar;D:\xsd/castor-1.2-jdo.jar;D:\xsd/castor-1.2-xml-schema.jar;D:\...

    com.springsource.org.castor.anttask-sources-1.2.0.jar

    jar包,官方版本,自测可用

    castor1.4 xsd生成java

    Castor是Java中的一款开源工具,它主要用于XML到Java对象的映射,以及Java对象到XML的转换。在XML Schema(XSD)广泛应用于定义XML数据结构的今天,Castor提供了一个方便的方法,将XSD文件自动转化为Java类,使得...

    castor-1.2 jar包 XML转化的好东东

    castor-1.2 jar包 XML转化的好东东 Castor 项目采用 BSD 类型的证书,因此可在任何类型的应用程序(包括完整版权的项目)中使用。 Castor 实际上仅仅有 XML 数据绑定,它还支持 SQL 和 LDAP 绑定

    castor-1.2-examples

    这个“castor-1.2-examples”项目提供了使用Castor 1.2版本的一些示例代码,帮助开发者更好地理解和应用这个库。 Castor的核心功能在于将Java对象序列化为XML文档,以及从XML文档反序列化回Java对象。这种能力使得...

    castor-core-1.3.2

    Unmarshall与Marshall使用的jar包

    com.springsource.org.castor.anttask-1.2.0.jar

    jar包,官方版本,自测可用

    castor-1.2-doc.zip

    "castor-1.2-doc.zip" 是这个版本的文档压缩包,其中可能包含用户指南、API参考、示例代码和常见问题解答等内容。 在Castor 1.2中,你可能会学习到以下关键知识点: 1. **对象关系映射(ORM)基础**:了解ORM的...

    castor-1.2-codegen castor代码生成需要的jar包

    Castor 项目采用 BSD 类型的证书,因此可在任何类型的应用程序(包括完整版权的项目)中使用。 Castor 实际上仅仅有 XML 数据绑定,它还支持 SQL 和 LDAP 绑定

    CASToR核医学(CT,PET,SPECT)重建软件

    CASToR,全称为“Computed Axial Tomography Reconstruction for Nuclear Medicine”,是一款专为核医学成像设计的图像重建软件。它的主要功能集中在CT(计算机断层扫描)、PET(正电子发射断层扫描)、SPECT(单...

    castor 框架jar包和src

    - **castor-core.jar**:这是Castor的核心库,包含了用于XML绑定和ORM的主要类和接口。 - **castor-xml.jar**:这个jar包包含XML解析和生成相关的组件,如DOM、SAX和StAX的支持。 - **其他依赖jar**:根据应用...

    castor-0.9.9.1.jar

    在标题中提到的"castor-0.9.9.1.jar"是Castor框架的一个特定版本的归档文件,这个版本是0.9.9.1。 Castor的核心功能在于它的数据绑定能力,使得开发者无需手动编写XML解析和生成代码。通过在Java类中使用特定的注解...

Global site tag (gtag.js) - Google Analytics