在JSF中将日期的一种String表示形式转换为另一种



在我的应用程序中,我必须处理以字符串形式出现的日期,格式为yyyy-MM-dd。我不能改变底层类。对于视图,为了方便用户,我希望将其显示在dd.MM中。yyyy 格式。

据我所知,f:convertDateTime>只适用于java.util。日期,而不是假装是日期的字符串。所以我写了我自己的转换器:

@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):

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

前端(在value中引用bean中的字段):

<h:outputText value="#{bean.date}">
   <f:convertDateTime pattern="dd.MM.yyyy" timeZone="EST" type="date" />
</h:outputText>

还没有测试过…这就是你想要的吗?

文档

相关内容

  • 没有找到相关文章