jsf和primefaces更新问题

jsf和primefaces更新问题,jsf,primefaces,Jsf,Primefaces,我有一个JSF页面,有两个表单(下面是伪代码) 第一个表单是针对用户的,有文本字段和电话号码表,以及用于 添加新的电话号码 第二种形式是p:对话框,显示用于向列表中添加电话号码的形式 我的问题是在p:对话框关闭后,我希望列表没有得到更新。如果我将p:dialog标记放在第一个表单中,列表确实会更新,但是有两个单独的表单,因为我需要在单独的操作中验证它们的内容 我的问题的简短版本:p:对话框有一个attr update=“phonesPanel”,但phonePanel的形式不同;我如何执行类似u

我有一个JSF页面,有两个表单(下面是伪代码)

第一个表单是针对用户的,有文本字段和电话号码表,以及用于 添加新的电话号码

第二种形式是p:对话框,显示用于向列表中添加电话号码的形式

我的问题是在p:对话框关闭后,我希望列表没有得到更新。如果我将p:dialog标记放在第一个表单中,列表确实会更新,但是有两个单独的表单,因为我需要在单独的操作中验证它们的内容

我的问题的简短版本:p:对话框有一个attr update=“phonesPanel”,但phonePanel的形式不同;我如何执行类似update=“personForm.phonesPanel”这样的操作,以便以不同的形式更新列表

<h:form id="personForm">

  <p:messages />

  <h:inputText label="Full Name" value="... />

  <p:commandLink value="Add Phone Number" onclick="dlg.show();" />

  <h:panelGrid id="phonesPanel" columns="1" style="width:100%" >
    <h:dataTable id="phonesTable">
      // ...
    </h:dataTable>
  </h:panelGrid>

</h:form>


<h:form>

  <p:dialog id="dialog" modal="true" widgetVar="dlg">
     <p:messages />
     <h:inputText label="Phone Number" value="... />
     <p:commandButton value="Add Phone Number" update="phonesPanel"   
       actionListener="#{handler.doAddPhoneNumber}" 
       oncomplete="handleLoginRequest(xhr, status, args)"/>  
  </p:dialog>

</h:form>

非常感谢您的帮助


罗伯回答我自己的问题

答案是:update=“personForm:phonesPanel”


谢谢大家

您可以做的另一件事是将“prependId”表单属性设置为“false”:

我怀疑update=“personForm:phonesPanel”在personForm之前没有“:”就可以工作。 这应该是正确的:

update=":personForm:phonesPanel"
update="phonesPanel" 
update=":personForm:phonesPanel"