JSFでフォームの動的レイアウトを作成しようとしています。 Map(Object、List(Object))型の "classifyingOptions"からの値に基づいて、動的な選択フィールドの数を生成する必要があります。JSFフォームの動的レイアウトでjava.lang.IllegalStateExceptionが発生する:重複IDが "j_id142"のコンポーネントが見つかりました
最初にui:repeatを使用してマップを反復しようとしましたが、u:selectおよびf:selectItemsのELはビューの作成時に評価され、変数は、UIで利用可能:。。
hereは、だから私はC使用に切り替え説明のための(レンダリング中にソースを繰り返します。forEachのを
<c:forEach items="#{action.classifyingOptions}" var="current" varStatus="i">
<h:panelGrid columns="2">
<u:select label="#{current.key.value}" id="select_#{i.index}" value="#{action.selectedOption}"
readonly="#{i.index != 0 ? !action.isSelected.get(i.index -1) : false }"
valueChangeListener="#{action.classifyingOptionChanged}" immediate="true">
<f:selectItems value="#{current.value}" var="option" itemValue="#{option.key}" itemLabel="#{option.value}" />
<a4j:ajax event="change" render="@form" execute="@this" />
</u:select>
<h:panelGroup />
</h:panelGrid>
</c:forEach>
私はマップを読み込み、選択フィールドを表示することができますザ・フィールドの最初のフィールドが選択されたときに、ajax呼び出しを使用して次のフィールドを有効にする必要があります。 問題は、最初のフィールドのオプションを選択すると、エラーがスローされるということです。 16.05.16 16:46:25:267 EEST] 0000006f FaceletViewDeエラーレンダリングビュー[/pages/details.xhtml] java .lang.IllegalStateException:重複したID "j_id142"のコンポーネントが見つかりました
ブラウザでは、次のエラーメッセージが表示されます。このページには、次のエラーが含まれています。文書末尾の余分な内容 以下は、最初のエラーまでのページのレンダリングです。
私はui:repeatとc:forEachの両方を使用しましたが、どれも正しく動作することはできませんでした。私の間違いはどこで確認できますか?あるいは、別のアプローチを知っていますか? ありがとうございました!
どのJSF impl/versionですか?最新のものを試しましたか? – BalusC
プロジェクトはJSF 2.0とRichFaces 4.3.5を使用しています。最終的に – Dani
MyFacesのバージョンは2.1.9です。 – Dani