0

我的页面中有下一个数据表:

<t:dataTable value="#{bean.listOfPersons}" var="current">
   <t:column>
      <t:outputText value="#{current.birthdate}">
         <f:converter pattern="dd/mm/yyyy HH:mm" type="date"/>
      </t:outputText>
   </t:column>
</t:dataTable>

Person是我创建的一个对象,它的一个属性是生日。现在我想在其中显示许多人的详细信息<t:dateTable>,包括生日。如您所见,我选择以dd/mm/yyyy HH:mm模式显示生日,因此如果知道时间,我可以看到时间。现在,问题是一些生日没有时间(只有日期),当时间nulljava.util.Date时,时间自动为 00:00。如果时间未知(仅日期),如何以短模式显示出生日期,而当我知道时间(日期和时间)时,如何显示常规模式?

现在会发生什么:

17/3/1994 5:56
1/1/1991 00:00
12/2/1990 17:53
21/12/2012 00:00

我想看到的:

17/3/1994 5:56
1/1/1991
12/2/1990 17:53
21/12/2012

时间未知时的短模式。


这就是我在 page.xhtml 中写的内容:

<t:outputText value="#{bean.date}">
<f:converter convertetId="myconverter" pattern="[some pattern]" timeZone="America/Chicago" type="date">
</t:outputText>

这是转换器:

public class MyConverter extends DateTimeConverter
{
@Override
public String getAsString (FacesContext faces, UIComponent comp, Object obj)
{
this.setTimeZone(null);
String result = super.getAsString(faces, comp, obj);
// My converter here...
return result;
}

@Override
public void setTimeZone(TimeZone tz)
{
// Always setting my own time zone, no matter what.
super.setTimeZone(TimeZone.getTimeZone("America/Chicago"));
}
}

现在,如您所见,我总是自己设置时区,getAsString因为不知何故,现在 f:converter 无法识别它的属性......知道为什么吗?

4

1 回答 1

0

使用ocpsoft的 PrettyTime 库。它有一个很好的 JSF 预建转换器,还支持不同的语言环境。

于 2013-07-03T10:38:20.563 回答