2010-08-18 55 views
4

我想在h:outputText中显示类似“Mary1010-10-20”的内容。日期值存储在MBean的称为date1的字段中,而用户名存储在MBean的称为username的字段中。我使用以下EL表达式和UI控件:使用<f:convertDateTime>格式化日期并将其显示在<h:outputText>中

<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”。我怎么解决这个问题??

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

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

但是我可以格式化的方法,使用喜欢h:outputFormat<f:param>只读h:inputText价值?有时显示的值太长,使用<h:outputFormat>将生成包含格式化消息的span标记。我想要获得类似<input type="text">的效果,UI控件具有固定长度,并且用户可以滚动查看消息(如果消息是太长。或者,如何使用CSS或JavaScript格式化使行为看起来像<input type="text">的span标签?

回答

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}"不知道工作,如果evertyhing将增加"by #{MBean.username}"虽然后确定。

+0

It works !!非常感谢。但是,我可以使用'h:outputFormat'和''这样的方法格式化只读'h:inputText'的值吗?有时显示的值很长,使用'会生成包含格式化消息的span标记。我想要获得类似于的效果,UI控件如果消息太长,固定长度和用户可以滚动查看消息。或者,如何使用CSS或JavaScript格式化使行为看起来像“”的span标记? – 2010-08-19 03:34:23

+1

这是一个新的独立问题。向HTML/CSS/JS男孩提出一个新问题。这个问题已被回答。标记最有用的答案接受 - 好吧,只有一个:) – BalusC 2010-08-19 11:20:57

+1

该解决方案缺少的一件事是时区的规范。有什么办法来完成与h:outputFormat? – 2012-04-16 17:20:43

相关问题