我有一个<h:selectBooleanCheckbox value="#{someBean.prop}">
,其中prop
是int
类型的属性。它真的不能马上工作吗?我是否必须实施自定义转换器才能将Boolean
转换为int
?有没有人碰巧在库存中有转换器代码?我读到JSF 2.0中存在一些错误,导致无法处理<h:selectBooleanCheckbox>
的转换器。任何人都可以确认吗?
我使用MyFaces 2,Tomahawk和Tomcat 6.
答案 0 :(得分:24)
正如其名称所示,<h:selectBooleanCheckbox>
应绑定到boolean
或Boolean
属性。没有其他的。它允许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()
。