我使用了带有@FacesConverter(forClass = Date.class)
之类的批注的自定义转换器类来覆盖前端中Date和Boolean对象的JSF默认字符串表示形式。我对此有两个问题:
Date按预期方式工作–所有Date对象在前端均具有一致的表示形式。但是,仅当我将注释更改为@FacesConverter("mypackage.presentation.BooleanFormatConverter")
,然后每次要使用它时,在xhtml中以<f:converter converterId="mypackage.presentation.BooleanFormatConverter" />
的形式显式调用它时,布尔才有效。
我将布尔值的字符串表示形式更改为“是/否”,并且在数据表的布尔值列上具有这些字符串值的过滤器框。但是,似乎无法识别出字符串值对应于布尔值true / false。我不知道如何解决此问题,而无需在后端明确地将布尔类型更改为字符串,然后将其视为数据表中的字符串列(由于其他原因,我宁愿保持类型不同并避免明确地转换所有内容)到后端的字符串)。
答案 0 :(得分:1)
最后,很简单,遵循Kukeltje的建议:后备bean中的布尔值(不需要按列完成)并更改xhtml:
<p:selectCheckboxMenu value="#{myView.yesNoCheckbox}" label="Select" onchange="PF('tableE').filter()" scrollHeight="150" filter="true" filterMatchMode="contains">
<f:selectItem itemValue="#{true}" itemLabel="Yes"/>
<f:selectItem itemValue="#{false}" itemLabel="No" />
</p:selectCheckboxMenu>
唯一的缺点是这部分必须每列手动完成(我的数据表的列数令人讨厌,这就是为什么我想要一种简单的全局方法(例如转换器)的原因。