При составлении следующей simpleType с XJC компилировать (из пакета JAXB) ...JAXB - XJC - влияющий на генерироваться типизированный класс и перечисления члены
<xs:simpleType name="test">
<xs:annotation>
<xs:appinfo>
<jaxb:typesafeEnumClass/>
</xs:appinfo>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="4">
<xs:annotation>
<xs:appinfo>
<jaxb:typesafeEnumMember name="FOUR"/>
</xs:appinfo>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="6">
<xs:annotation>
<xs:appinfo>
<jaxb:typesafeEnumMember name="SIX"/>
</xs:appinfo>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
я в конечном итоге со следующим перечислением в Java (импорт заявления и комментарии удалены)
@XmlEnum
public enum Test {
@XmlEnumValue("4")
FOUR("4"),
@XmlEnumValue("6")
SIX("6");
private final String value;
Test(String v) {
value = v;
}
public String value() {
return value;
}
public static Test fromValue(String v) {
for (Test c: Test.values()) {
if (c.value.equals(v)) {
return c;
}
}
throw new IllegalArgumentException(v.toString());
}
}
Это именно то, что я хочу ... для метода public String value()
исключением. Я ожидаю, что этот метод будет называться public String getValue()
в соответствии с соглашениями об именах Sun. Таким образом, я могу легко использовать его на JSP-странице, используя EL. Теперь я должен поработать над этим.
Есть ли у кого-нибудь опыт в дальнейшей настройке компиляции XJC на более полезную нумерацию с помощью метода getValue()
вместо метода value()
? Или я могу добавить метод или что-то еще?
P.S. Это произошло в версии 2.0.3 JAXB. Я загрузил последнюю версию v2.1.8, и это то же самое ...
Спасибо за то, что подумал о филармоне ... В настоящее время я работал над этим. Я также разместил его на форуме JAXB (http://forums.java.net/jive/message.jspa?messageID=310818), но ответа там тоже не будет ... посмотрим. ИМХО это порочное генерирование кода. Я дам вам знать, работает ли плагин JAXB. – 2008-11-08 10:02:16