我是JSF2的新手。
我正在尝试使用p:dialog显示表格。
该表具有项目列表,并且在行的末尾具有此删除功能。我的问题是,当它单击删除时,整个页面将重新加载,并且我的弹出表关闭。
但是,当它不在p:dialog中时,删除功能将正常工作。
我的bean,无论是视图范围还是会话范围的,都输出相同的输出。

这是我的bean中的删除代码

public String delete(Items items) {

    getItemList.remove(items);
    return null;
}


在我的xhtml中剪下

<p:dialog header="Item Table" widgetVar="popUpTbl" modal="true" >
        <h:form>
            <p:dataTable style="width:800px;height:485px;" id="popUpTbl" var="item" value="#{myBean.itemList}" >
                <p:column headerText="Item A">
                    <h:outputText value="#{item.itemA}" />
                </p:column>
                <p:column headerText="Item B">
                    <h:outputText value="#{item.itemB}" />
                </p:column>
                <p:column headerText="Action">
                    <h:commandLink value="Delete" action="#{myBean.delete(item)}" />
                </p:column>
            </p:dataTable>
        </h:form>
    </p:dialog>

最佳答案

h:commandLink makes完整的帖子并重新加载整个页面,您要使用p:commandLink默认情况下执行的ajax。

试试看

<p:commandLink value="Delete" process="@this" update="@form" action="#{myBean.delete(item)}" />


process="@this"因为p:commandLink默认处理整个表单(不需要),而update="@form"因为您需要用Bean数据(或至少是数据表)刷新整个表单,但这等效于表格)。

您可以保留h:commandLink并完成like here,但是它已内置到p:commandLink中。

关于java - JSF2-使用p:dialog重载弹出表格,并在调用函数后关闭,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36995462/

10-11 00:00