如何在p:对话框中更新值并在p:对话框中显示

时间:2015-04-24 08:25:47

标签: primefaces dialog

我有一个数据表,在最后一列我将进行编辑操作,它将触发对话框。但是,我发现对话框中的值未更新。有人可以帮忙吗?

我的代码如下。事实上,bean.currentItem.name和bean.currentItem.age应该基于我从表中的选择。我检查bean.currentItem不是null并且从preEdit方法引用我的选择,但是值永远不会出现在p:dialog中。

<p:dataTable ....>
    <p:column...
    <p:column...
    <p:column>
        <f:facet name="header">
            <h:outputLabel value="Update" />
        </f:facet>
            <p:remoteCommand name="preEdit" action="#{bean.preEdit}"
                process="@this" update="@this @form:dlg">
                <f:setPropertyActionListener target="#{bean.currentItem}"
                            value="#{thisItem}" />
            </p:remoteCommand>
            <p:commandLink styleClass="no-decor"
                oncomplete="preEdit();PF('dlg').show();" value="Edit"/>                         
    </p:column>
</p:dataTable>

<p:dialog header="#{lbl.tt_cat_upd}" widgetVar="dlg" id="dlg"
            resizable="false" >
    <h:outputLabel value="#{bean.currentItem.name}" />
    <h:outputLabel value="#{bean.currentItem.age}" />
</p:dialog>

1 个答案:

答案 0 :(得分:0)

如何删除p:remoteCommand并让p:commandLink为您完成所有工作?

假设您h:formdataTable

围绕dialog
        <p:commandLink action="#{bean.preEdit}" process="@this" update="dlg" styleClass="no-decor" oncomplete="PF('dlg').show()" value="Edit">
            <f:setPropertyActionListener target="#{bean.currentItem}"
                        value="#{thisItem}" />
       </p:commandLink>

如果您的dataTabledialog的格式不同,则可以update="dlg"替换update=":formIdContainingDialog:dlg"