【问题标题】:Format Date output in JSF在 JSF 中格式化日期输出
【发布时间】:2011-06-11 17:28:00
【问题描述】:

如果#{myBean.birthdate}java.util.Calendarjava.util.Date 类型,我是否可以使用现有函数在EL 本身内部对其进行格式化,输出类似于DateFormat 的@987654325 产生的输出@, MEDIUM,LONG abd FULL 输出类型?

我不想输出 #{myBean.birthdate} 的完整表单:Wed Jan 19 19:01:42 WIT 2011,我只喜欢 Jan 19, 2011 的简单输出>.

我应该改用#{formatBean.format(myBean.birthdate)} 吗?

【问题讨论】:

    标签: jsf el date-formatting


    【解决方案1】:

    使用<f:convertDateTime>。您可以将其嵌套在任何输入和输出组件中。模式规则同java.text.SimpleDateFormat

    <h:outputText value="#{someBean.dateField}" >
        <f:convertDateTime pattern="dd.MM.yyyy HH:mm" />
    </h:outputText>
    

    【讨论】:

    • life.java - Jigar Joshi 哇,这对我来说是新事物,非常好!谢谢 !但是下面这个案例呢?我使用primefaces,日期值将嵌入属性值中。例如,.
    • @bertie:在下面查看我的答案并使用 OmniFaces。
    • 如何检查年份或月份?
    【解决方案2】:

    如果你使用OmniFaces,你也可以使用它的EL函数比如of:formatDate()来格式化Date对象。你可以这样使用它:

    <h:outputText value="#{of:formatDate(someBean.dateField, 'dd.MM.yyyy HH:mm')}" />
    

    这样您不仅可以将其用于输出,还可以将其传递给其他 JSF 组件。

    【讨论】:

    • 使用 OmniFaces 方法,它比 f:convertDateTime 更直观。
    【解决方案3】:

    使用 EL 2(表达式语言 2),您可以为您的问题使用这种类型的构造:

        #{formatBean.format(myBean.birthdate)}
    

    或者你可以在你的 bean 中添加一个替代的 getter,结果是

        #{myBean.birthdateString}
    

    其中 getBirthdateString 返回正确的文本表示。如果是实体,记得把get方法注解为@Transient。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-02
      • 1970-01-01
      • 2014-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多