1

我们使用可收藏的 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}有意义吗?有没有更好的办法?

4

1 回答 1

1

幕后的DateTimeConverter用途SimpleDateFormat。您可能想改用它,以便摆脱#{component}争论。

于 2012-07-26T16:07:27.043 回答