2017-04-07 12 views
2

custom Facelet tagを作成しました。あなたがXHTMLで設定されていないときにID属性全体を省略した場合と同じように、IDをデフォルトのj_idtXxxに戻したいと思います。Faceletタグで既定の生成IDを使用する方法

<my:tag id="fiets"/><span id="fiets"/>としてください。

ただし、<my:tag/><span id="j_idtXxx"/>と表示する必要があります。

私のタグファイルに<h:anyTag id="#{id}"/>を使用すると、単に空のID属性で失敗します。デフォルトの生成IDとしてレンダリングする方法はありますか?私のようなものを作成したいと思います:

<c:set var="id" value="#{empty id ? USE_DEFAULT : id}" /> 

をしかし、私はUSE_DEFAULTで使用するのか分かりません。

答えて

2

機能はUIViewRoot#createUniqueId()で利用できます。現在のUIViewRootインスタンスはEL内で暗黙オブジェクト#{view}として利用可能です。

だから、これは実行する必要があります。即答のための

<c:set var="id" value="#{empty id ? view.createUniqueId() : id}" /> 
+0

感謝を。私のケースでは、これは例外です: 'コンポーネントID main:j_id6はすでにビュー内に見つかりました'。 –

+0

これは、 'scope =" request "またはそれ以上で、同じタグのインスタンスが複数ある場合に起こります。 – BalusC

+0

''を削除し、 'id ="#{空のid?view.createUniqueId():id} "を使用しました。今それは動作します。 –

関連する問題