2016-06-06 16 views
0

XML 파일을 만들 때 부울을 String으로 변경하려고합니다. 내 소식통입니다.Castor-XML : 여러 클래스의 필드 처리자

java.lang.IllegalArgumentException가 : 개체가

는 것 같다 선언 클래스의 인스턴스가 아닌

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> 

다음과 같이 나는 예외를 얻었다 "field-handler"는 여러 클래스에서 사용할 수 없습니다.이 경우에 작동합니다. "field-handler"대신 "test.MailBooleanHandler"를 "field"에 직접 입력하십시오. 예를 들어 :

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

내가 "현장 핸들러를"사용할 수있는 다른 방법이 있습니까?

답변