JSF2.0 Converter

JSF2.0 Converter

JSF2.0 日期转换

Jsf RI 包提供默认的日期转换器 <f: convertDateTime /> 但在使用时发现从数据读出数据显示的时候会少一天,比如:数据库中的日期是2010-4-24 在经过转换器前还是这个日期,但转换后显示到界面上时就会显示2010-4-23 ,无论设置格式还是时区都无效。

既然不好用就自定义一个转换器,好在JSF2.0 自定义转换器也非常的方便了

整个代码如下:

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 ;
    }

}

其中DateUtils 类就是常用的日期和字符串的转换方法。

XHTML 使用时如下:

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



你可能感兴趣的:(JSF2.0 Converter)