使用<f:convertdatetime>格式化日期并将其显示在<h:outputtext> </h:outputtext> </f:convertdatetime>中

时间:2010-08-18 10:52:39

标签: jsf

我想在h:outputText中显示类似“2010-10-20 by Mary”的内容。日期值存储在名为date1的MBean字段中,而用户名存储在名为username的MBean字段中。我使用以下EL表达式和UI控件:

<h:outputText value="#{MBean.date1} by #{MBean.username}">
   <f:convertDateTime pattern="YYYY-MM-DD" timeZone="#{configMB.timeZone}" />
</h:inputText>

可以显示该值。但是,它忽略f:convertDateTime指定的日期格式。无论我如何更改数据格式,它总是显示类似“ 2010-06-08 12:35:22.0 由Mary”。我怎么解决这个问题??

更新:Zenzen的解决方案适用于以下代码更改。

<h:outputFormat value="{0, date, yyyy-MM-dd} by #{1}">
    <f:param value="#{MBean.date1}" />
    <f:param value="#{MBean.username}" />
</h:outputFormat>

但是,我可以使用类似h:inputTexth:outputFormat的方法格式化只读<f:param>的值吗?有时显示的值太长,使用<h:outputFormat>将生成包含格式化消息的span标记。我希望有一个像<input type="text">这样的效果,UI控件具有固定长度,用户可以滚动如果消息太长则查看消息。或者,我如何使用css或javascript格式化使行为看起来像<input type="text">的span标记?

1 个答案:

答案 0 :(得分:16)

您可以这样做:

<h:outputFormat value="{0, date, yyyy-MM-dd} by #{MBean.username}">
    <f:param value="#{MBean.date1}" />
</h:outputFormat>

我确信它会与value="{0, date, yyyy-MM-dd}"一起使用,但不确定在添加"by #{MBean.username}"之后是否可以正常使用。