JSF-1.2 のパラメーターを使用したカスタム関数呼び出しのサポートが必要で、このドキュメントhttp://docs.oracle.com/javaee/5/tutorial/doc/bnahq.html#bnaioに出会いました。
しかし、その関数に可変引数を使用することは可能ですか?
配列を使用してみましTag Libraryたが、その場合、JSF が関数を認識しないようです。
JSF-1.2 のパラメーターを使用したカスタム関数呼び出しのサポートが必要で、このドキュメントhttp://docs.oracle.com/javaee/5/tutorial/doc/bnahq.html#bnaioに出会いました。
しかし、その関数に可変引数を使用することは可能ですか?
配列を使用してみましTag Libraryたが、その場合、JSF が関数を認識しないようです。
いいえ、EL メソッド式は可変引数をサポートしていません。現在のEL 2.2 バージョンにはありません。将来のEL 3.0 バージョンにもありません。
別のアプローチを探す必要があります。具体的な機能要件が不明なため、どれもお勧めできません。
更新:したがって、機能要件は次のとおりです。
ページに含まれる JavaScript でメッセージ バンドルからパラメータ化されたメッセージを使用する必要があります。メッセージ バンドルでパラメータ化されたファイル名を持つファイルを削除しようとすると、エラー メッセージまたは警告メッセージのようなもの。
まあ、それを回避するための賢明な回避策はありません。次の 2 つのオプションがあります。
さまざまな量の引数を取る一連の EL 関数を作成します。
#{my:format1(...)}
#{my:format2(...)}
#{my:format3(...)}
...
<h:outputFormat>結果を出力する代わりに、リクエスト スコープの変数に格納するように拡張します。
<my:outputFormat ... var="foo">
    <f:param ... />
    <f:param ... />
    <f:param ... />
    ...
</my:outputFormat>
...
#{foo}
JSF2 用のOmniFaces JSF ユーティリティ ライブラリには、<o:outputFormat>コンポーネントのフレーバーといくつかのof:formatX()関数の両方のソリューションがあります。JSF 1.x では使用できませんが、オープン ソースであり、ある程度の洞察が得られるはずです。
リストまたは配列をカスタム関数に渡すことができます。
警告: このコードはテストされていないため、汚いと感じるかもしれません。これは完全なハックです。
マネージド Bean として登録された 2 つのアーティファクトが必要です。
1) 破壊されたMapタイプ:
/** Important: must be none-scoped */
public class ArrayBuilder extends AbstractMap<Object, Object> {
  private List<Object> list = new ArrayList<Object>();
  @Override public Object get(Object entry) {
    if(entry instanceof MakeArray) {
      return list.toArray();
    } else {
      list.add(entry);
      return this;
    }
  }
  @Override public Set<Entry<Object, Object>> entrySet() {
    return Collections.emptySet();
  }
}
アレイの作成をトリガーするポイズン ピル:
/** should be application scoped bean */
public final class MakeArray {
}
EL式:
#{fn:foo(arrayBuilder['one']['two']['three'][makeArray])}
コードの目的は、Object3 つの文字列を含む配列を関数に渡すことfooです。
これが実際に機能するかどうかはわかりません。