【发布时间】:2019-08-23 09:52:43
【问题描述】:
我正在开发一个 JSF 仪表板 Web 应用程序,其中包括几个非常大的 PrimeFaces 数据表。如果我可以为某些类型的表示设置全局格式,那将非常方便——目前我能想到的唯一方法是使用支持 bean 方法,例如
public String formattedBoolean(Boolean inputBoolean) {
return inputBoolean ? "Yes" : "No";
}
然后我可以从前端手动调用(同样,我可以使用f:convertDateTime 组件将日期对象格式化为字符串)。但是,这种方法需要添加很多样板 XHTML,例如
<p:column headerText="Start Date" id="startDate"
sortBy="#{dataContainer.startDate}"
filterBy="#{dataContainer.startDate}">
<h:outputText value="#{dataContainer.startDate}">
<f:convertDateTime pattern="yyyy-MM-dd"/>
</h:outputText>
</p:column>
我宁愿避免。有谁知道是否有更优雅的方式来全局覆盖前端对象的默认 Java 字符串表示,或者至少在数据表的上下文中?
【问题讨论】:
-
@JasperdeVries:对不起,在我的浏览器中查看了错误的选项卡...是的,在这里覆盖默认转换器是一个好方法。或组合...
-
从性能的角度来看,使用自定义 facelets 函数会更好,只需执行以下操作:#{myLib:myFunction(dataContainer.startDate)}
-
@tandraschko:为什么不覆盖默认转换器?它让它在任何地方自动发生? (是的,我同意 tagfile 不是最好的)
标签: jsf primefaces