gee*_*daa 11 int checkbox jsf boolean converter
我有一个<h:selectBooleanCheckbox value="#{someBean.prop}">地方prop是一个类型的属性int.它真的不能马上工作吗?我是否必须实现自定义转换器才能转换Boolean为int?有没有人碰巧在库存中有转换器代码?我读到JSF 2.0中存在一些错误,可以防止转换器<h:selectBooleanCheckbox>被处理.任何人都可以证实吗?
我使用MyFaces 2,Tomahawk和Tomcat 6.
Bal*_*usC 25
该<h:selectBooleanCheckbox>应,正如它的名字说,被绑定到一个boolean或Boolean财产.没有其他的.它允许converter属性实际上是规范中的一个错误.它永远不应该允许它.
问题出在你的模型中,你为什么要用a int来表示一个布尔状态?改变你的模型让它变得更有价值boolean.
如果由于某种原因(第三方API,愚蠢的架构师或愚蠢的业务限制等)更改模型不是一个选项,那么将模型getter/setter包装在支持bean中,如下所示
public boolean isChecked() {
return someModel.getSomeInt() != 0;
}
public void setChecked(boolean checked) {
someModel.setSomeInt(checked ? 1 : 0);
}
Run Code Online (Sandbox Code Playgroud)
并用它代替<h:selectBooleanCheckbox value="#{bean.checked}" />.