Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JSF中从一个日期的字符串表示转换为另一个日期的字符串表示_Jsf_Jsf 2_Date Conversion_Converters - Fatal编程技术网

在JSF中从一个日期的字符串表示转换为另一个日期的字符串表示

在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) {

在我的应用程序中,我必须处理以字符串形式出现的日期,格式为yyyy-MM-dd。我无法更改基础类。 在视图中,为了方便用户,我希望它以dd.MM.yyyy格式显示

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

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