JAXB 中有一个已知错误:https ://jaxb.dev.java.net/issues/show_bug.cgi?id=733
JAXB 无法正确生成布尔字段 getter 和 setter,为了向后兼容,未修复此错误。
存在一个 JAXB 插件,它将确保生成以下布尔字段的 getter 和 setter:
- 生成 setXXX(Boolean value)
- 生成
getXXX()
- 如果 boolean 属性指定 XSD 中的默认值,则 getXXX() 返回boolean,
- 如果布尔属性未在 XSD 中指定默认值,则 getXXX() 返回Boolean。
问题:尝试编辑/查看 JSF 组件(例如复选框)中的 XXX 字段不起作用 - 该组件已禁用。
我使用 Apache Trinidad 1.2。组件编码如下:
<tr:selectBooleanCheckbox value="#{MvsDatasetUI.object.mvsDataset.temporary}" id="temporary" converter="javax.faces.Boolean" />
我没有深入追踪这一点,但假设(由下面的解决方法支持)是 JSF EL 解析器(或 whathaveyou)寻找布尔 getXXX() 方法,并且由于它没有找到它,因此该组件被禁用。
解决方法:如果我将 getXXX() 方法更改为返回布尔值,那么一切正常。
问题:
- 你对如何以最快的方式解决这个问题有什么想法?
- 我是否错过了 boolean-getter JAXB 插件的一些自定义?
- 是否有可能(是否有意义)更改 JSF 解析器(或 whathaveyou),以便如果找不到 Boolean getXXX(),它将回退到 boolean getXXX()?
我不希望手动干预和更改所有生成的 getXXX() 方法以返回布尔值而不是布尔值。