我们必须在 Facelets 页面上显示年份字段。
<h:outputText value="#{dateTOloginDate.get(Calendar.YEAR)}"/>
这总是返回 1 而不是年份值。我怎样才能实现它?
是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
as 模型值类型有什么好处。