我的页面中有下一个数据表:
<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
模式显示生日,因此如果知道时间,我可以看到时间。现在,问题是一些生日没有时间(只有日期),当时间null
在java.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 无法识别它的属性......知道为什么吗?