我有一个< h:selectBooleanCheckBox value =“#{someBean.prop}”>其中,prop是int类型的属性.真的不行吗?我必须实现一个自定义转换器将Boolean转换为int吗?有没有人有库存的转换代码?我读到JSF 2.0中有一些错误,阻止了< h:selectBooleanCheckBox>待处理.有人可以确认吗?
我使用MyFaces 2,战斧和Tomcat 6.
解决方法
@H_403_7@ < h:selectBooleanCheckBox>应该像其名称一样绑定到一个布尔或布尔属性.没有其他的.它允许转换器属性实际上是一个 bug in the spec.它不应该允许它.您的模型中的问题更多,为什么要使用int来表示布尔状态?改变你的模型,让它成为一个完整的布尔值.
如果由于某种原因(第三方API,愚蠢的架构师或愚蠢的业务限制等)改变模型不是一个选择,那么将后面的bean中的模型getter / setter包装成如下
public boolean isChecked() { return someModel.getSomeInt() != 0; } public void setChecked(boolean checked) { someModel.setSomeInt(checked ? 1 : 0); }
并将其替换为< h:selectBooleanCheckBox value =“#{bean.checked}”/> ;.