将h:selectBooleanCheckbox值绑定到int / Integer而不是boolean / Boolean

时间:2011-04-18 17:23:21

标签: jsf checkbox int boolean converter

我有一个<h:selectBooleanCheckbox value="#{someBean.prop}">,其中propint类型的属性。它真的不能马上工作吗?我是否必须实施自定义转换器才能将Boolean转换为int?有没有人碰巧在库存中有转换器代码?我读到JSF 2.0中存在一些错误,导致无法处理<h:selectBooleanCheckbox>的转换器。任何人都可以确认吗?

我使用MyFaces 2,Tomahawk和Tomcat 6.

3 个答案:

答案 0 :(得分:24)

正如其名称所示,<h:selectBooleanCheckbox>应绑定到booleanBoolean属性。没有其他的。它允许converter属性实际上是bug in the spec。它永远不应该允许它。

你的模型中存在的问题更多,你为什么要使用int来表示布尔状态?更改您的模型,让它成为一个值得信赖的boolean

如果出于某种原因(第三方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}" />

答案 1 :(得分:2)

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

答案 2 :(得分:0)

您可以在MySQL中将字段设置为df[df['Date'].isin(maxDates)]\ .groupby('Date')\ .apply(lambda x: x.sort_values('var_2', ascending = False).head(2))\ .reset_index(drop = True) ID Year Month Day Hour var_1 var_2 var_3 Date 0 ID_1 2018 6 12 21 0.69 67.37 98.99 6-12 1 ID_1 2018 6 12 22 0.73 57.18 99.12 6-12 2 ID_1 2018 6 13 11 0.66 66.13 98.78 6-13 3 ID_1 2018 6 13 12 0.68 59.96 98.90 6-13 。实际上,问题是在创建布尔变量时获取方法名称。使用方法名称tinyint代替getChecked()