在JSF中格式化日期输出

ber*_*tie 57 jsf el date-formatting

如果#{myBean.birthdate}是的java.util.Calendarjava.util.Date类型,可以予可能使用现有的函数也许,随着像由所产生的一个输出格式化此的EL本身内部DateFormatSHORT,MEDIUM,LONGABD FULL输出类型?

相反,输出的完整形式#{myBean.birthdate}:周三1月19日19时01分42秒WIT 2011,我只是喜欢简单输出2011年1月19日.

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

Jig*_*shi 155

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

<h:outputText value="#{someBean.dateField}" >
    <f:convertDateTime pattern="dd.MM.yyyy HH:mm" />
</h:outputText>
Run Code Online (Sandbox Code Playgroud)


Mar*_*ler 25

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

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

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

  • 使用OmniFaces方法,它比`f:convertDateTime`更直观. (5认同)

小智 6

使用EL 2(表达式语言2),您可以将此类构造用于您的问题:

    #{formatBean.format(myBean.birthdate)}
Run Code Online (Sandbox Code Playgroud)

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

    #{myBean.birthdateString}
Run Code Online (Sandbox Code Playgroud)

其中getBirthdateString返回正确的文本表示.如果它是一个实体,请记住将get方法注释为@Transient.