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 に答える