我们使用可收藏的网址和GET方法。
我们有一些包含日期的参数,并使用默认的DateTime转换器进行转换。
<f:viewParam name = "parameter" value = "#{model.parameter}" converter = "javax.faces.DateTime" />
这完美无缺,参数是转换为String
的转换器当我们必须为这些页面生成链接(例如,使用<h:link>
)时,我们需要将Date
参数转换为格式正确的字符串(因为<f:param>
标记不支持转换器)。 Date.toString()
的默认格式不会被javax.faces.converter.DateTimeConverter
解析。
我想出了以下解决方案,但我感觉它可以更优雅地完成。
我定义了一个自定义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}
的使用是否有意义?还有更好的方法吗?