2012-04-11 1 views
0

Ich habe einen String-Wert, den ich mit JAXB in eine Bean setzen möchte. So habe ich eine Instanz von RuntimeTypeInfoSet und ich kann die RuntimePropertyInfo abrufen und von diesem Aufruf getAccessor einen Accessor für die Eigenschaft abrufen. Das Problem besteht darin, dass der Accessor erfordert, dass der Wert bereits vom richtigen Typ ist. Wie konvertiere ich es?Konvertieren von Werten mit JAXB

+0

'RuntimeTypeInfoSet' ist spezifisch für die JAXB (JSR-222) Referenz-Implementierung. Versuchen Sie, eine JAXB-Implementierung zu verwenden, um ein Objekt außerhalb einer Unmarshal-Operation zu füllen? –

Antwort

1

Die Antwort ist eine Transducer-Instanz zu verwenden:

switch (property.kind()) { 
    case VALUE: 
    case ATTRIBUTE: 
     transducer = ((RuntimeNonElementRef) property).getTransducer(); 
     break; 
    case ELEMENT: 
     transducer = ((RuntimeElementPropertyInfo) property).getTypes().get(0).getTransducer(); 
     break; 
    case REFERENCE: 
    case MAP: 
    default: 
     throw new UnsupportedOperationException("Don't know how to handle property kind " + property.kind() + " for " + property); 
}