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好像有问题,放到方法中
相关推荐
NULL 博文链接:https://orange5458.iteye.com/blog/1139596
Castor 项目采用 BSD 类型的证书,因此可在任何类型的应用程序(包括完整版权的项目)中使用。 Castor 实际上仅仅有 XML 数据绑定,它还支持 SQL 和 LDAP 绑定
该资源展示了Castor的XML编组框架功能,作为文章《Castor功能与应用参考(二)》的示例代码
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.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
Unmarshall与Marshall使用的castor-xml-1.3.2.jar包
CASToR是一款核医学成像领域,基于PET的图像重建过程的C++代码程序软件。该程序代码全部开源,有相应的开发维护团队。该压缩包是改程序的安装源代码
使用Castor时,如果没有根节点时,会报出异常,这个例子就是为了解决这个问题
castor-1.2-examples
jar包,官方版本,自测可用
castor-0.9.5.3-xml.jar,java和xml互相转换所使用的JAR
Unmarshall与Marshall使用的jar包
jar包,官方版本,自测可用
castor-1.2-doc.zip
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:\...
Castor 项目采用 BSD 类型的证书,因此可在任何类型的应用程序(包括完整版权的项目)中使用。 Castor 实际上仅仅有 XML 数据绑定,它还支持 SQL 和 LDAP 绑定
jar包,官方版本,自测可用
jar包,官方版本,自测可用
自制CHM版的API文档,带索引。 注:如果各位下载后打开或无法显示页面,请在CHM文件右键—属性—解除锁定即可。
Castor的jar包 对XML的序列号更容易些!