我们使用可收藏的 URL 和 GET 方法。
我们有一些包含日期的参数,并使用默认的 DateTime 转换器进行转换。
<f:viewParam name = "parameter" value = "#{model.parameter}" converter = "javax.faces.DateTime" />
这完美无瑕,参数与字符串相互转换
当我们必须生成<h:link>
到这些页面的链接(例如,with)时,我们需要将 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}
有意义吗?有没有更好的办法?