2013-10-15 35 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