我正在生成一个基于 web 服务的 jaxws 客户端。Jaxb 将使用 java.lang.Boolean 而不是原始类型生成布尔值。除此之外,它还会为 bean 生成 is() 命名约定。
但是,如果我尝试将布尔值(例如 isOptional())链接到复选框,它将引发以下异常:
value="#{property.optional}": Property 'optional' not readable on type java.lang.Boolean
我的谷歌技能告诉我 jsf 适用于:
boolean isOptional()
boolean getOptional()
Boolean getOptional()
但不与
Boolean isOptional()
但是,由于 web 服务的大小和数量,手动更新 bean 是不可行的,那么有什么方法可以让 jsf 正确使用 java.lang.Boolean isOptional() 吗?或者我可以在生成时以某种方式在 jaxb 绑定文件中定义一个属性,该属性会神奇地生成“getOptional()”吗?
在旁注中,以下确实有效:
<h:selectBooleanCheckbox value="#{property.isOptional()}"/>
但是我可能实际上无法更新该值,因为它找不到设置器。
编辑:我正在运行最新的 jdk 7,“java -version”的输出:
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
Java HotSpot(TM) Client VM (build 23.1-b03, mixed mode, sharing)
“wsimport -version”的输出:
JAX-WS RI 2.2.4-b01
生成的代码:
public Boolean isOptional() {
return optional;
}