今天我注意到ocpsoft有一个很好的时间库,适合在JSF 2中用作转换器。这样做的优点是你可以直接在视图中显示的日期中使用转换器,它将日期转换成字符串,告诉用户6 hours ago
或17 hours from now
之类的东西。我认为最好是将两者结合起来,JSF转换日期和这个显示26-03-2013 17:00 (4 hours from now)
之类的东西。我可以用下面的代码实现类似的东西:
<h:outputText value="#{task._StartDate}" style="padding:2px;">
<f:convertDateTime pattern="dd-MM-yyyy HH:mm" timeZone="GMT+1" />
</h:outputText>
<h:outputText value="#{task._StartDate}">
<f:converter converterId="org.ocpsoft.PrettyTimeConverter" />
</h:outputText>
当我想将第二个值放入括号中时,问题就来了。PrettyTimeConverter
只接受日期作为值,我不能直接在那里写括号。另外,JSF不接受以下内容:
<h:outputFormat value="({0})">
<f:param value="#{task._StartDate}">
<f:converter converterId="org.ocpsoft.PrettyTimeConverter" />
</f:param>
</h:outputFormat>
我有以下错误:
<f:converter> Parent not an instance of ValueHolder:
javax.faces.component.UIParameter@1492636
关于如何避免使用特定的h:outputText
标签写两个括号的任何想法?
您可以直接将这些括号放在模板文本中,而不需要另一个<h:outputText>
s。
<h:outputText value="#{task._StartDate}" style="padding:2px;">
<f:convertDateTime pattern="dd-MM-yyyy HH:mm" timeZone="GMT+1" />
</h:outputText>
(<h:outputText value="#{task._StartDate}">
<f:converter converterId="org.ocpsoft.PrettyTimeConverter" />
</h:outputText>)
参见:
- 是建议使用h:outputText的一切?