Biorąc pod poniższym przykładzie xsd snippet:JAXB xjc: Jak wygenerować kod dla ciągów, który zwraca pusty, jeśli wartość jest zerowa?
< xs:attribute name="SEGMENT" default="" use="optional" type="xs:string"/ >
gdy XJC generuje klasę zawierającą atrybut fasoli SEGMENT
następujące getter jest generowane automatycznie:
public String getSEGMENT() {
if (segment == null) {
return "";
} else {
return segment;
}
}
Moje pytanie brzmi: jak masz go zrób to samo dla obiektów xs:element
? Innymi słowy, biorąc pod uwagę następujące urywek xsd:
< xs:element name="NAME" default="" type="xs:string"/ >
Chcę wiedzieć, czy mogę dostać XJC generować następujące:
public String getNAME() {
if (name == null) {
return "";
} else {
return name;
}
}
Jak można to zrobić?
initializer pole pewno byłoby właściwe. Pytanie brzmi teraz: Jak uzyskać xjc, aby dodać pusty inicjator String do każdego ciągu w każdej klasie? Być może w osobnym pliku powiązań? –
@java luva: Dodałem trochę więcej szczegółów do mojej odpowiedzi, a także znalazłem kilka wtyczek, które wyglądają interesująco. Sprawdź, czy to pomaga. – Bogdan
Dzięki za dodatkowe informacje. Mam jednak jeden problem. Linki, które wysłałeś, wymagają skonfigurowania zadania maven lub mrówki. Nie używam maven. Problemem podczas ustawiania zadania ant jest błąd Linkage stwierdzający, że różne klasy są ładowane z tą samą nazwą. Problem, jak sądzę, polega na tym, że java 1.6 ma wbudowany xjc, a dodanie jaxb-xjc-2.1.9.jar do mojej ścieżki klasy xjc taskdef powoduje konflikt. Moje pytanie brzmi: w jaki sposób można uzyskać skrypt ant do zignorowania 1.6 (mój JAVA_HOME jest ustawiony na to) i użyć mojej ścieżki klasy taskdef, lub odwołać się do słoika 1.6 xjc zamiast w taskdef? –