我们必须在Facelets页面上显示年份字段。
<h:outputText value="#{dateTOloginDate.get(Calendar.YEAR)}"/>
这总是返回1而不是年份值。我怎样才能实现它?
答案 0 :(得分:2)
Calendar.YEAR
是一个常量字段值。默认情况下,常量字段值在EL范围内根本不可用。然而,硬编码的常量值确实有效,正如您自己遇到的那样。
有几种方法可以更清洁地实现这一目标:
请改用<f:convertDateTime>
。您只需要通过java.util.Date
获取Calendar#getTime()
个实例。
<h:outputText value="#{dateTOloginDate.time}">
<f:convertDateTime pattern="yyyy" />
</h:outputText>
使用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
作为模型值类型是多么有益。