castor Date date-format

本文介绍了一个针对Exolab Castor的日期字段处理器的具体实现,该处理器能够将字符串转换为日期类型,并支持多种日期格式。文章还展示了如何在XML映射文件中配置不同的日期格式处理器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值