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">
내가 "현장 핸들러를"사용할 수있는 다른 방법이 있습니까?