【问题标题】:Castor-XML: field-handler for several classesCastor-XML:多个类的字段处理程序
【发布时间】:2016-06-06 11:56:08
【问题描述】:

我试图在创建 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.IllegalArgumentException: 对象不是声明类的实例

似乎“字段处理程序”不能被多个类使用,如果我可以使用 将“test.MailBooleanHandler”直接放入“字段”而不是“字段处理程序”。例如:

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

还有其他方法可以使用“字段处理程序”吗?

【问题讨论】:

    标签: java xml castor


    【解决方案1】:

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

    http://castor-data-binding.github.io/castor/reference-guides/1.3.3/html/XML%20data%20binding.html#xml.field.handler.generalized [1.7.5。为多个字段定义重用 ConfigurableFieldHandler]

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 2018-05-03
      相关资源
      最近更新 更多