代码之家  ›  专栏  ›  技术社区  ›  Ken Chan

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

jsf
  •  5
  • Ken Chan  · 技术社区  · 14 年前

    我想在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指定的日期格式。无论我如何更改数据格式,它总是显示类似于“

    更新:Zenzen的解决方案与以下代码更改一起工作。

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

    但是,我可以格式化只读的值吗 h:inputText 使用方法 h:outputFormat <f:param> ? 有时显示的值太长并且使用 <h:outputFormat> 将生成包含格式化消息的span标记 <input type="text"> ,UI控件具有固定长度,如果消息太长,用户可以滚动查看消息。或者,如何格式化span标记,使行为看起来像 <输入type=“text”> 使用css还是javascript?

    1 回复  |  直到 12 年前
        1
  •  16
  •   wittich Manish Shrivastava    7 年前

    你可以这样做:

    <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}" 不过。