2013-10-15 70 views
0

我使用primefaces自動完成在我的應用提出的userIds到User.Once用戶呈現父面板組分量輸入三個字符到​​3210文本框我UserIds名單將被建議給用戶自動完成。只要用戶從列表中選擇了userId,我就會按照以下格式John Doe(jd123)更新輸出文本中的用戶名和姓,並在此名稱旁邊顯示一個Delete按鈕。由於在代碼首先Ajax請求的意見所示工作完美fine.But當我試圖刪除,我使用<h:outputText/>打印我收到一個錯誤是未能與<p:ajax>

javax.faces.FacesException名稱:找不到標識爲 的「組件」「j_idt34:0:imgid」引用的「項目」。

我的代碼:

<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請求父組件。但我不知道我做錯了什麼。

回答

0

更新h:form組件應該更安全。我不確定你可以通過id更新每個h:component。如果您打開生成的xhtml並嘗試檢查子組件的實際ID路徑,則會看到不包含其父組件的所有ID。有些ID是跳過

但是,你可以試試這個

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

希望它可以幫助

+0

最終,上述表達式呈現爲':items'與我已經嘗試過,但沒有luck.Yes我可以更新的形式,但它攪亂了我的設計。正如你上面看到我的代碼,它能夠找到我從'該組件外部'更新的時間,但不能通過它的子組件 – SRy