【问题标题】:Global date/boolean formatting in frontend of JSF applicationJSF 应用程序前端的全局日期/布尔格式
【发布时间】: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


【解决方案1】:

根据上述建议,我决定覆盖给定类的默认 FacesConverter,因为这些格式是我希望在整个应用程序中始终以文本形式呈现的格式。

【讨论】:

    猜你喜欢
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    相关资源
    最近更新 更多