访问EL中的java.util.Calendar字段

时间:2012-08-15 16:52:31

标签: jsf-2 calendar el

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

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

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

1 个答案:

答案 0 :(得分: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.Calendar作为模型值类型是多么有益。