0

アプリケーションでprimefacesオートコンプリートを使用して、ユーザーIDをユーザーに提案しています。ユーザーがAutocompleteテキストボックスに3文字を入力すると、UserIdsリストがユーザーにオートコンプリートするよう提案されます。John Doe(jd123)ユーザーがリストから userId を選択するとすぐに、出力テキストのユーザーの姓名を次の形式で更新し、Deleteこの名前の横にボタンを付けます。コードのコメントに示されているように、最初の ajax リクエストは完全に正常に動作しています。しかし、使用して印刷している名前を削除しようとすると<h:outputText/>、エラーが発生します。

javax.faces.FacesException: 「j_idt34:0:imgid」から参照される識別子「items」を持つコンポーネントが見つかりません。

私のコード:

<h:outputLabel value="Select user" for="acMinLength" />
<p:autoComplete id="acMinLength" 
                minQueryLength="3" 
                value="#{autoCompleteBean.txt2}" 
                completeMethod="#{autoCompleteBean.complete}">
    <p:ajax event="itemSelect" 
            listener="#{autoCompleteBean.handleSelect}" 
            update="items"/>    // First Ajax request perfectly working fine
</p:autoComplete>

<h:outputLabel value="selectedUsers" for="acMinLength" />
<h:panelGroup id="items">
    <ui:repeat value="#{autoCompleteBean.printId}" var="item">
        <h:outputText value="#{item}"/>
        <h:graphicImage name="delete.png" library="images" id="imgid">
        <p:ajax event="click"
                listener="#{autoCompleteBean.updateList}" 
                update="items"/>  // This is where i am getting exception 
   </ui:repeat>
<h:panelGroup>

親コンポーネントを子 Ajax リクエストで更新できることはわかっています。しかし、私は自分が間違っていることを知りません。

4

2 に答える 2

0

h:form コンポーネントを更新する方が安全です。すべての h: コンポーネントを id で更新できるかどうかはわかりません。結果の xhtml を開いて子コンポーネントの実際の id パスを確認すると、親コンポーネントのすべての id が含まれていないことがわかります。一部の ID がスキップされています

ただし、これを試すことができます

update=":#{p:component('items')}"

それが役に立てば幸い

于 2013-10-16T09:38:06.077 に答える
0

厳密な検索の後、andreここに投稿された回答( Primefaces - データテーブル外の識別子を持つコンポーネントが見つかりません)を試してみましたが、うまくいきました。

このような

update="@([id$=items])"
于 2013-10-16T14:11:57.673 に答える