【发布时间】:2015-10-04 19:04:48
【问题描述】:
我的时区下午好。
我正在开发一个同时使用 JSF 和 JPA 的 Web 应用程序。 有一个屏幕包含多个复选框,如下所示:
option1 check1 check2
option2 check1 check2
option3 check1 check2
在数据库中,检索复选框值的查询使用一个 LEFT JOIN(这是业务逻辑)来检索复选框值: Select * FROM Option LEFT OUTER JOIN CheckBoxType ....
类图是这样的:
class Option
String label
checkBoxType checkBox
class CheckBoxType
boolean value;
最终的结果是,它可能存在一个“选项”列表,其中一些包含为NULL的checkBox变量。
在JSF中我们使用如下代码:
<ui:repeat var="assocCheck" value="#{checkBean.getOptions}">
<h:selectBooleanCheckBox name="#{assocCheck.label}" value="#{assocCheck.checkBox.value}"/>
</ui:repeat>
要显示结果没有问题,如果“选项”对象包含复选框为空,则屏幕上的复选框显示为 NO 值,当我将其中一个复选框设置为 true 并尝试保存时他们,JSF 抛出一个异常,告诉我以下内容
javax.faces.component.UpdateModelException: javax.el.PropertyNotFoundException: ....xhtml @45,126 value="#{assocCheck.checkBox.value}": Target Unreachable, 'null' returned null
我明白为什么会发生这种情况,处理此类问题的最佳方法是什么?可以在复选框上添加 valueChangeListener(每次复选框被填满时,bean 上都有一个创建 checkBox 对象的方法) 是最好的方法吗?
提前致谢 最好的问候
【问题讨论】: