2016-05-16 7 views
0

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の両方を使用しましたが、どれも正しく動作することはできませんでした。私の間違いはどこで確認できますか?あるいは、別のアプローチを知っていますか? ありがとうございました!

+0

どのJSF impl/versionですか?最新のものを試しましたか? – BalusC

+0

プロジェクトはJSF 2.0とRichFaces 4.3.5を使用しています。最終的に – Dani

+0

MyFacesのバージョンは2.1.9です。 – Dani

答えて

0

問題を解決しました。私はa4j:ajaxの代わりにf:ajaxを使用しました

関連する問題