我正在生成一个基于 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()}"/>
但是,我实际上无法更新该值,可能是因为它找不到设置器。
EDIT:我运行的是最新的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;
}