我有一个 <h:selectBooleanCheckbox value="#{someBean.prop}">
,其中 prop
是 int
类型的属性。真的不能马上生效吗?我是否必须实现自定义转换器才能将 Boolean
转换为 int
?有没有人碰巧有库存的转换器代码?我读到 JSF 2.0 中有一些错误会阻止处理 <h:selectBooleanCheckbox>
的转换器。任何人都可以确认吗?
我使用 MyFaces 2、Tomahawk 和 Tomcat 6。
最佳答案
<h:selectBooleanCheckbox>
,顾名思义,应该绑定(bind)到 boolean
或 Boolean
属性。没有其他的。它允许 converter
属性实际上是 bug in the spec 。它不应该允许它。
问题更多在您的模型中,为什么要使用 int
来表示 boolean 状态?改变你的模型,让它成为一个完整的 boolean
。
如果由于某种原因(第 3 方 API、愚蠢的架构师或愚蠢的业务限制等)无法更改模型,则将模型 getter/setter 包装在支持 bean 中,如下所示
public boolean isChecked() {
return someModel.getSomeInt() != 0;
}
public void setChecked(boolean checked) {
someModel.setSomeInt(checked ? 1 : 0);
}
并将其用作
<h:selectBooleanCheckbox value="#{bean.checked}" />
。关于jsf - 绑定(bind) h :selectBooleanCheckbox value to int/Integer instead of boolean/Boolean,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5706513/