格式化JSF转换的值



今天我注意到ocpsoft有一个很好的时间库,适合在JSF 2中用作转换器。这样做的优点是你可以直接在视图中显示的日期中使用转换器,它将日期转换成字符串,告诉用户6 hours ago17 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的一切?

相关内容

  • 没有找到相关文章

最新更新