【发布时间】:2010-06-10 14:10:48
【问题描述】:
JAXB 中有一个已知错误:https://jaxb.dev.java.net/issues/show_bug.cgi?id=733
JAXB 无法正确生成布尔字段 getter 和 setter,为了向后兼容,未修复此错误。
存在一个 JAXB 插件,它将确保为布尔字段生成以下 getter 和 setter:
- setXXX(布尔值)生成
-
getXXX() 生成
- 如果布尔属性在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),以便在找不到布尔 getXXX() 时,它会退回到布尔 getXXX()?李>
我不希望手动干预并更改所有生成的 getXXX() 方法以返回布尔值而不是布尔值。
【问题讨论】:
标签: java jsf jaxb boolean trinidad