使用<f:convertDateTime>格式化日期并将其显示在<h:outputText>中

Ken*_*han 5 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>
Run Code Online (Sandbox Code Playgroud)

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

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

<h:outputFormat value="{0, date, yyyy-MM-dd} by #{1}">
    <f:param value="#{MBean.date1}" />
    <f:param value="#{MBean.username}" />
</h:outputFormat>
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*zyk 16

你可以这样做:

<h:outputFormat value="{0, date, yyyy-MM-dd} by #{MBean.username}">
    <f:param value="#{MBean.date1}" />
</h:outputFormat>
Run Code Online (Sandbox Code Playgroud)

我确定它会工作,value="{0, date, yyyy-MM-dd}"但不确定加入后是否可以正常使用"by #{MBean.username}".