CastorXML:几个类的字段处理程序



创建XML文件时,我正在尝试将布尔值更改为字符串。以下是我的消息来源。

public class BooleanHandler extends GeneralizedFieldHandler {
public BooleanHandler() {
super();
}
@Override
public Object convertUponGet(Object value) {
boolean booleanValue = (boolean)value;
if(booleanValue){
return "1";
}else{
return "0";
}
}
@Override
public Object convertUponSet(Object value) {
if("1".equals(value)){
return true;
}else{
return false;
}
}
@Override
public Class<Boolean> getFieldType() {
return Boolean.class;
}
@Override
public Object newInstance(Object parent) throws IllegalStateException
{
//-- Since it's marked as a string...just return null,
//-- it's not needed.
return null;
}
}

<mapping>
<!-- Change boolean to String Value Handler-->
<field-handler name="booleanHandler" class="test.BooleanHandler">
</field-handler>

<class name="test.Foo">
<field name="testFlag" type="boolean" handler="booleanHandler">
<bind-xml name="TEST_FLAG" node="element" />
</field>
</class>
<class name="test.Bar">
<field name="testBoolean" type="boolean" handler="booleanHandler">
<bind-xml name="TEST_BOOLEAN" node="element" />
</field>
</class>
</mapping>

我得到的异常如下:

java.lang.IollegalArgumentException:对象不是声明类的实例

似乎"字段处理程序"不能被几个类使用,如果我将"test.MailBooleanHandler"直接放在"字段"中,而不是"字段处理程序"。例如:

<field name="testFlag" type="boolean" handler="test.BooleanHandler">

有没有其他方法可以使用"字段处理程序"?

我已经通过参考以下文档解决了这个问题。

http://castor-data-binding.github.io/castor/reference-guides/1.3.3/html/XML%20data%20binding.html#xml.field.handler.generalized[1.7.5.对多个字段定义重用可配置字段处理程序]

实现ClonableFieldHandlerMarker接口并实现copyFieldHandler()方法将解决此问题。

相关内容

  • 没有找到相关文章

最新更新