在JSF中从一个日期的字符串表示转换为另一个日期的字符串表示
在我的应用程序中,我必须处理以字符串形式出现的日期,格式为yyyy-MM-dd。我无法更改基础类。 在视图中,为了方便用户,我希望它以dd.MM.yyyy格式显示 据我所知,f:convertDateTime>只适用于java.util.Date,而不适用于冒充日期的字符串。所以我写了我自己的转换器:在JSF中从一个日期的字符串表示转换为另一个日期的字符串表示,jsf,jsf-2,date-conversion,converters,Jsf,Jsf 2,Date Conversion,Converters,在我的应用程序中,我必须处理以字符串形式出现的日期,格式为yyyy-MM-dd。我无法更改基础类。 在视图中,为了方便用户,我希望它以dd.MM.yyyy格式显示 据我所知,f:convertDateTime>只适用于java.util.Date,而不适用于冒充日期的字符串。所以我写了我自己的转换器: @Override public String getAsString(FacesContext context, UIComponent component, Object value) {
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
try {
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd");
Date tempDate = inputFormat.parse((String) value);
SimpleDateFormat outputFormat = new SimpleDateFormat("dd.MM.yyyy");
return outputFormat.format(tempDate);
}
catch (ParseException e) {
return null;
}
}
这是可行的,但感觉不对。从字符串转换为日期,再转换回其他字符串。另外,我喜欢convertDateTime处理时区和用户语言环境的方式,在这种方法中,它们被完全忽略了
有更好的解决办法吗?比如解析一个日期,然后通过f:convertDateTime?后端(Bean)传递它:
前端(在值内引用bean中的该字段):
还没有测试过它或者其他什么。。。这就是你想要的吗
我试了一下P
String string = "2014-05-14";
Date date = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH).parse(string);
System.out.println(date); // Sat May 14 00:00:00 BOT 2014
setDate(date); //Set date in bean
<h:outputText value="#{bean.date}">
<f:convertDateTime pattern="dd.MM.yyyy" timeZone="EST" type="date" />
</h:outputText>