绑定h:selectBoolean复选框值为int/Integer,而不是boolean/boolean



我有一个<h:selectBooleanCheckbox value="#{someBean.prop}">,其中prop是类型为int的属性。它真的不能马上工作吗?我必须实现自定义转换器才能将Boolean转换为int吗?有没有人碰巧在库存中有这个的转换器代码?我读到JSF 2.0中有一个错误,它阻止处理<h:selectBooleanCheckbox>的转换器。有人能证实吗?

我使用MyFaces2、Tomahawk和Tomcat6。

正如其名称所说,<h:selectBooleanCheckbox>应该绑定到booleanBoolean属性。没有别的。它允许converter属性实际上是规范中的一个错误。它不应该允许它

问题更多的是在您的模型中,为什么要使用int来表示布尔状态?改变你的模型,让它成为一个完全有价值的boolean

如果由于某种原因(第三方API、愚蠢的架构师或愚蠢的业务限制等(,更改模型不是一种选择,那么将模型getter/setter包装在后台bean中,如下所示

public boolean isChecked() {
    return someModel.getSomeInt() != 0;
}
public void setChecked(boolean checked) {
    someModel.setSomeInt(checked ? 1 : 0);
}

并将其用作CCD_ 13。

只是说MySQL没有布尔值作为字段类型选择,它可能是满足这种需求的一个例子。

您可以在MySQL中将字段设置为tinyint。实际上,问题是在创建布尔变量时获取方法名称。使用方法名称getChecked()而不是isChecked()

相关内容

  • 没有找到相关文章

最新更新