我的页面中有下一个数据表:
<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
是我创建的对象,其中一个属性是birthdate。
现在我想展示这个<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:转换器无法识别它的属性......知道原因吗?