JSF2.0 日期轉(zhuǎn)換
Jsf RI 包提供默認(rèn)的日期轉(zhuǎn)換器 <f: convertDateTime /> 但在使用時(shí)發(fā)現(xiàn)從數(shù)據(jù)讀出數(shù)據(jù)顯示的時(shí)候會(huì)少一天,比如:數(shù)據(jù)庫(kù)中的日期是2010-4-24 在經(jīng)過(guò)轉(zhuǎn)換器前還是這個(gè)日期,但轉(zhuǎn)換后顯示到界面上時(shí)就會(huì)顯示2010-4-23 ,無(wú)論設(shè)置格式還是時(shí)區(qū)都無(wú)效。
既然不好用就自定義一個(gè)轉(zhuǎn)換器,好在JSF2.0 自定義轉(zhuǎn)換器也非常的方便了
整個(gè)代碼如下:
import java.text.ParseException;
import java.util.Date;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import cn.xiangyunsoft.utils.DateUtils;
import cn.xiangyunsoft.utils.StringUtils;
@FacesConverter(value = "dateConverter")
public class ConvertDate implements Converter {
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
if (StringUtils.isNotEmpty(arg2)) {
try {
return DateUtils.parseDate(arg2);
} catch (ParseException e) {
e.printStackTrace();
}
}
return null;
}
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
if (arg2!=null){
return DateUtils.format((Date) arg2, "yyyy-MM-dd");
}
return null;
}
}
import java.util.Date;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import cn.xiangyunsoft.utils.DateUtils;
import cn.xiangyunsoft.utils.StringUtils;
@FacesConverter(value = "dateConverter")
public class ConvertDate implements Converter {
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
if (StringUtils.isNotEmpty(arg2)) {
try {
return DateUtils.parseDate(arg2);
} catch (ParseException e) {
e.printStackTrace();
}
}
return null;
}
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
if (arg2!=null){
return DateUtils.format((Date) arg2, "yyyy-MM-dd");
}
return null;
}
}
其中DateUtils 類(lèi)就是常用的日期和字符串的轉(zhuǎn)換方法。
在XHTML 使用時(shí)如下:
<h:inputText id="#{cc.attrs.id}" value="#{cc.attrs.value}"
onkeydown="ctlent(event);" styleClass="#{cc.attrs.styleClass}">
<!--<f:convertDateTime pattern="yyyy-MM-dd" locale="zh-CN"/>-->
<f:converter converterId="dateConverter" />
</h:inputText>
onkeydown="ctlent(event);" styleClass="#{cc.attrs.styleClass}">
<!--<f:convertDateTime pattern="yyyy-MM-dd" locale="zh-CN"/>-->
<f:converter converterId="dateConverter" />
</h:inputText>