2011-12-09 29 views
0

とDataTableのユニークなID属性を生成します。リビジョンオブジェクトには、リスト内のオブジェクトのインデックスを表す「インデックス」フィールドが含まれています。私はそれがidに現われるのを見たいと思う。しかし、何も起こらない。 #{revision.index}式は決して解釈されません(リビジョンオブジェクトのgetIndex()は呼び出されません)。は、私がどのように見えるのコードを使用しようとしているJSF2とIceFaces2

あなたは、JSFは、すでにのように見える何か作る私に教えてあげる:

revisionDocuments:0:revisionSequenceAdresse 
revisionDocuments:1:revisionSequenceAdresse 
revisionDocuments:2:revisionSequenceAdresse 

真のが、これはHTMLで生成されただけのclientIdに影響を与えます。フォームフィールドを表すUIComponent(FacesContextのViewRoot内)は、HTMLに "revisionDocuments:0:revisionSequenceAdresse"が含まれている場合はすべて同じ "id"と "clientId"(はい、イベント、ViewRootで見つかる "clientId" revisionDocuments:revisionSequenceAdresse)。

誰かが私の試行で助けることができますか?

ありがとうございました。ご協力いただきありがとうございます。

答えて

0

コンポーネントIDは、ビューのレンダリング時ではなく、ビューの作成時に決定されます。ビューの作成時に#{revision}は使用できないため、常に空と評価されます。基本的には、ビューの作成時にスコープ内にある#{agendaBean}などにバインドする必要があります。コンポーネントIDは、生成されたHTML出力ではなく、コンポーネント自体に固有です。物理的に1つの同じコンポーネントに複数の異なるIDを割り当てることはできません。

しかし、実際にはこのアプローチを回避する必要はありません。これが解決策だと思ったあなたの具体的な問題は、以前の質問:JSF2 + IceFaces 2 - Retrieve UIComponent from ViewRootですでに答えられています。

+0

JSF1.2とIceFaces 1.8.2の別のプロジェクトで、このコードに本当に近い何かをしたように、ちょっと混乱しました。ケースはわずかに異なります(ライフサイクルの観点から)。このプロジェクトで1.8.2から2.0.2に移行するときに動作するかどうかを確認します。ライフサイクルの答えと精度に感謝します。あなたは多くを助けている! – Wis

+0

ビューの作成時にEL式の値を使用できる場合は可能です。あなたの具体的な問題は、 'id'属性にある値がビューのレンダリング時にしか利用できないEL式を評価しようとしていることです。 'id =" foo#{agendaBean.someId} "'のようなものを試してみると、正しく評価されていることがわかります。しかし、大きなBUTでは、ビューのレンダリング時に同じID接尾辞の値を持つ生成されたすべてのHTML要素が終了します。 – BalusC

関連する問題