2012-07-25 84 views
1

我們使用可收藏的URL和GET方法。自定義JSF EL功能,日期轉換器和當前組件

我們有一些參數包含日期,並使用默認的DateTime轉換器進行轉換。

<f:viewParam name = "parameter" value = "#{model.parameter}" converter = "javax.faces.DateTime" /> 

這完美的作品和參數轉換器,並從字符串

當我們要生成的鏈接(例如,<h:link>)這些頁面,我們需要Date參數轉換爲正確格式的字符串(如<f:param>標籤不支持轉換器)。 javax.faces.converter.DateTimeConverter將不會解析默認格式Date.toString()

我想出了以下解決方案,但我有感覺它可以做得更優雅。

我定義的自定義EL函數convertDate

<f:param name="parameter" value="#{ func:convertDate(model.someDate, component) }" /> 

與以下實現

public static String convertDate(Date date, UIComponent uiComponent) 
{ 
    DateTimeConverter dateTimeConverter = new DateTimeConverter(); 
    return dateTimeConverter.getAsString(FacesContext.getCurrentInstance(), uiComponent, date); 
} 

的想法是使用默認javax.faces.convert.DateTimeConverter將日期轉換,但我需要相應UIComponent參考。

#{component}的用法是否有意義?有沒有更好的辦法?

回答

1

DateTimeConverter使用SimpleDateFormat下蓋。您可能想使用它,以便您可以擺脫#{component}參數。