В JAXB есть известная ошибка: https://jaxb.dev.java.net/issues/show_bug.cgi?id=733
JAXB неправильно генерирует методы получения и установки логических полей, эта ошибка не исправлена для обратной совместимости.
Плагин JAXB существует и гарантирует, что будут генерироваться следующие методы получения и установки для логических полей:
- setXXX (логическое значение) генерируется
- getXXX () генерируется
- Если логический атрибут задает значение по умолчанию в XSD, тогда getXXX () возвращает логическое ,
- Если логический атрибут не имеетзадайте default в XSD, затем getXXX () возвращает Boolean .
Проблема : попытка изменить / просмотреть поле XXXв компоненте JSF (например, флажок) не работает - компонент отключен.
Я использую Apache Trinidad 1.2.Компонент кодируется следующим образом:
<tr:selectBooleanCheckbox value="#{MvsDatasetUI.object.mvsDataset.temporary}" id="temporary" converter="javax.faces.Boolean" />
Я не проследил это подробно, но предположение (подкрепленное обходным решением ниже) заключается в том, что JSF EL resolver (или whathaveyou) ищет Boolean getXXX () и, поскольку он не находит его, компонент отключен.
Обходной путь : Если я изменю метод getXXX (), чтобы вернуть Boolean, то все пойдет.
Вопросы :
- Что вы думаете о том, как решить эту проблему в кратчайшие сроки?
- Я пропустил некоторые настройки для JAXB-плагина boolean-getter?
- Возможно (имеет ли смысл) изменить JSF-преобразователь ( или что-то еще?), так что если Boolean getXXX () не найден, он вернется к Boolean getXXX ()?
Я бы предпочел не вмешиваться вручную и изменять все сгенерированные getXXX() методы для возврата логического вместо логического.