2012-02-07 6 views
2

일부 필드를 null로 설정할 수있는 객체를 마샬링하고 있습니다. 구성을 위해 xml- 매핑 파일과 함께 castor를 사용하고 있습니다.비어있는 태그에 null 필드를 마샬링하라는 캐스터를 말하는 법?

class Entity { 
    private int id; 
    private String name; 
    private String description; // THIS CAN BE NULL 
    /* ... getters and setters follow ... */ 
} 

...이 같은 매핑 파일 : 나는 정렬 화하고있어 클래스는 다음과 같이있는 필드가 null의 경우

<mapping> 
    <class name="Entity"> 
     <field name="id" type="integer"/> 
     <field name="name" type="string"/> 
     <field name="description" type="string"/> 
    </class> 
</mapping> 

내가 지금지고있어 무엇 (예를 단순화) :

<entity> 
    <id>123</id> 
    <name>Some Name</name> 
</entity> 

설명 필드가 null 인 경우에도 결과 XML에 빈 태그를 넣고 싶습니다.

<entity> 
    <id>123</id> 
    <name>Some Name</name> 
    <description /> <!-- open/close tags would be ok --> 
</entity> 

답변

2

한 가지 방법은 GeneralizedFieldHandler를 사용하는 것입니다. 해킹 비트이지만 문자열 인 다른 필드에서도 작동합니다.

예 :

브라이언, 나는 evenutally 나는 매핑에 필요한 및 nillable로 속성을 설정 한 경우, null 값이 빈 태그에 연재됩니다 발견
<mapping> 
    <class name="Entity"> 
     <field name="id" type="integer"/> 
     <field name="name" type="string"/> 
     <field name="description" type="string" handler="NullHandler"/> 
    </class> 
</mapping> 


public class NullHandler extends GeneralizedFieldHandler { 

    @Override 
    public Object convertUponGet(Object arg0) 
    { 
     if(arg0 == null) 
     { 
      return ""; 
     } 

     return arg0; 
    } 

    @Override 
    public Object convertUponSet(Object arg0) 
    { 
     return arg0; 
    } 

    @Override 
    public Class getFieldType() 
    { 
     return String.class; 
    } 

} 
+0

감사합니다. –