1

我们必须在 Facelets 页面上显示年份字段。

<h:outputText value="#{dateTOloginDate.get(Calendar.YEAR)}"/>

这总是返回 1 而不是年份值。我怎样才能实现它?

4

1 回答 1

2

Calendar.YEAR一个常量字段值。默认情况下,常量字段值在 EL 范围内根本不可用。但是,正如您自己遇到的那样,硬编码的常量值确实有效。

有几种方法可以以更干净的方式实现这一目标:

  1. 改为使用<f:convertDateTime>。您只需要java.util.Date通过Calendar#getTime().

    <h:outputText value="#{dateTOloginDate.time}">
        <f:convertDateTime pattern="yyyy" />
    </h:outputText>
    
  2. 使用OmniFaces <o:importConstants>。它允许您将给定类型的常量字段值导入 EL 范围。这样您就可以准确地使用预期的语法。

    <o:importConstants type="java.util.Calendar" />
    ...
    <h:outputText value="#{dateTOloginDate.get(Calendar.YEAR)}" />
    

    只是,这是 IMO 的一个极端用例。我个人更喜欢这种<f:convertDateTime>方式。如果您只是使用java.util.Date而不是笨拙的java.util.Calendar. 我看不出拥有java.util.Calendaras 模型值类型有什么好处。

于 2012-08-16T21:59:45.710 回答