无法从p:commandLink'update'属性更新组件,链接存在于p:dataTable中

时间:2011-09-16 10:53:55

标签: jsf-2 primefaces

<p:dataTable id="id" value="#{bean.soemList}" var="account">
    <p:commandLink value="#{account.id}" action="#{bean.methodCall}" 
        update="dialogID" oncomplete="dlg1.show();">
    </p:commandLink>

...

<p:dialog header="#{i18n.details}" widgetVar="dlg1" modal="true" height="200" width="600">
    <h:panelGroup id="dialogID" layout="block">
        <h:outputLabel value="#{bean.var1}"></h:outputLabel>
    </h:panelGroup>
</p:dialog>
当链接位于p:dialog之外时,

p:dataTable会更新,但当链接位于p:dataTable时,p:dialog不会显示更新的值。我需要在p:dataTable中保留链接。要更新的组件不在dataTable中。

2 个答案:

答案 0 :(得分:0)

如果该对话框的元素位于他们自己的<p:commandLink>内,我只能在dataTable中获得update <h:form>对话框的组件。

示例:

<p:dialog appendToBody="true" ...>
  <h:form id="dialogForm" ...>
    ...
  </h:form>
</p:dialog>

<p:dataTable ...>
  <h:form id="dataTableForm" ...>
    ...
  </h:form>
</p:dataTable>

另请注意,我在对话框中添加了属性appendToBody="true"。这对于在AJAX更新后通过id定位对话框非常重要。

答案 1 :(得分:0)

您是否尝试按以下方式附加表单ID

<form id="myformid">
.....
    <p:commandLink value="#{account.id}" action="#{bean.methodCall}" update=":myformid:dialogID" oncomplete="dlg1.show();">
    </p:commandLink>
....
<p:dialog header="#{i18n.details}" widgetVar="dlg1" modal="true"
        height="200" width="600">
        <h:panelGroup id="dialogID" layout="block">
        <h:outputLabel value="#{bean.var1}"></h:outputLabel>
....
</form>

希望它有所帮助!