Hi Joey, to keep things apart a little bit, yes, with Castor 1.3.2 it will be possible to define a field handler once and reference it multiple times from within field mappings. This feature is already present with Castor 1.3.1, but due to a bug is didn't work as intended, and has been fixed for Castor 1.3.2.
I am in the process of releasing 1.3.2 within a short period, but I am facing problems with the Codehaus Nexus infrastructure right now. If you wanted, you could try this feature with the latest 1.3.2 SNAPSHOT release. Regards Werner On 09.03.2011 10:48, 吕晓一 wrote: > Sorry, my English is poor, I try my best to make everyone understand what I > wrote. > > In fact, I want to ask : is it possible to define one <field-handler/> and > use it in everywhere ? > > Joey > >> -----邮件原件----- >> 发件人: avner21J [mailto:[email protected]] >> 发送时间: 2011年3月9日 17:28 >> 收件人: [email protected] >> 主题: Re: [castor-user] how to reuse the field-handler defined in mapping file? >> >> >> Joey, >> >> How does this post of yours relate to the original problem? >> >> Don't clutter with unrelated posts and make it difficult for others to >> understand. >> >> >> >> 吕晓一 wrote: >>> >>> Hi, my project use Castor, and I have one question. >>> >>> I created a field handler named TimeHander.java like this: >>> >>> public class TimeHandler extends GeneralizedFieldHandler { >>> >>> private SimpleDateFormat formatter = new >> SimpleDateFormat("yyyyMMdd"); >>> >>> public TimeHandler() { >>> super(); >>> } >>> >>> public void setConfiguration(Properties config) throws >>> ValidityException { >>> String pattern = config.getProperty("date-format"); >>> if (pattern == null) { >>> throw new ValidityException("need parameter >> \"date-format\""); >>> } >>> try { >>> formatter = new SimpleDateFormat(pattern); >>> } catch (IllegalArgumentException e) { >>> throw new ValidityException("the parameter \"" + pattern + >> "\" >>> invalid"); >>> } >>> } >>> >>> >>> public Object convertUponGet(Object value) { >>> if (value == null) return null; >>> Date date = (Date) value; >>> return formatter.format(date); >>> >>> } >>> >>> public Object convertUponSet(Object value) { >>> Date date = null; >>> try { >>> if (StringUtils.isEmpty((String) value)) { >>> return date; >>> } >>> date = formatter.parse((String) value); >>> } >>> catch (ParseException px) { >>> throw new IllegalArgumentException(px.getMessage()); >>> } >>> return date; >>> >>> } >>> >>> public Class getFieldType() { >>> return Date.class; >>> } >>> >>> >>> public Object newInstance(Object parent) throws IllegalStateException >>> { >>> return null; >>> } >>> } >>> >>> >>> and my Java bean has two java.util.Date type fields, >>> to make Castor work correctly, >>> I have to define two <field-handler/> in mapping file like this: >>> ... >>> ... >>> <field-handler name="timeHandler1" class="TimeHandler"> >>> >>> </field-handler> >>> <field-handler name="timeHandler2" class="TimeHandler"> >>> >>> </field-handler> >>> ... >>> ... >>> <class name="Mybean "> >>> <map-to xml="MyBean"/> >>> <field name="time1" type="java.lang.String" handler="timeHandler1"> >>> <bind-xml name="Time1" node="element"/> >>> </field> >>> <field name="time2" type="java.lang.String" handler="timeHandler2"> >>> <bind-xml name="Time2" node="element"/> >>> </field> >>> </class> >>> .... >>> >>> that's mean: one field , one <field-handler/> , even the same processing >>> logic. >>> >>> But my project has dozens of Java beans, and has dozens of Date-type >>> fileds, >>> so, I have to define dozens of <field-handler/>, it is so terrible.... >>> >>> Is there any advices? >>> >>> Regards >>> >>> Joey >>> >>> 2011-3-9 >>> >>> >>> >>> >> >> -- >> View this message in context: >> http://old.nabble.com/UnmarshalException-for-xml-created-by-Castor-Marshal >> ler-tp31097277p31104647.html >> Sent from the Castor - User mailing list archive at Nabble.com. >> >> >> --------------------------------------------------------------------- >> To unsubscribe from this list, please visit: >> >> http://xircles.codehaus.org/manage_email >> > --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email

