当前位置: 首页 > 知识库问答 >
问题:

如何将删除按钮的对象在Primeface数据表?

长孙章横
2023-03-14

我有一个包含两行的数据表和一个列,其中有一个带有删除该行中对象的简单按钮的表单。

首先是工作版本:

<h:dataTable value="#{actorTableBackingBean.allActors}" 
    var="actor" styleClass="table table-bordered">

    <h:column headerText="Actor Name" sortBy="#{actor.firstName}">
        <h:outputText value="#{actor.firstName}"/>
    </h:column>

    <h:column headerText="Actor Detail">
        <h:form>
            <h:commandButton value="Delete Actor" 
                styleClass="btn btn-primary" 
                action="#{actorTableBackingBean.deleteActor(actor.actorId)}"/>
         </h:form>
    </h:column>
</h:dataTable>

这就是deleteActor方法的样子:

public String deleteActor(String id){
    removeActorWithId(id);
    return "/allActors.xhtml";
}

private void removeActorWithId(String id){
    int idk = Integer.parseInt(id);
    for(Actor a:allActors){
        if(a.getActorId() == idk){
            allActors.remove(a);
            return;
        }
    }
}

所以这完全按照预期工作。

然而,当我使用如图所示的素数面的分页数据表时,删除按钮仅在第二种情况下的第一行起作用,并且仅在第一次起作用。当我点击其他行的“删除”按钮时,什么也没发生。原因可能是什么?

对于第二种情况,只需将

共有2个答案

公羊宗清
2023-03-14

以下代码可能对您有所帮助。

你的xhtml代码应该是这样的

    <h:form>
         <h:dataTable value="#{actorTableBackingBean.allActors}" 
            binding="#{actorTableBackingBean.dataTable}"
            var="actor" styleClass="table table-bordered">

            <h:column headerText="Actor Name" sortBy="#{actor.firstName}">
                <h:outputText value="#{actor.firstName}"/>
            </h:column>

            <h:column headerText="Actor Detail">
                <h:commandButton value="Delete Actor" 
                        styleClass="btn btn-primary" 
                        action="#{actorTableBackingBean.deleteActor}"/>

                </h:column>
        </h:dataTable>
   </h:form>

您必须在bean文件中添加一个DataTable变量

private javax.faces.component.html.HtmlDataTable dataTable;

public HtmlDataTable getDataTable() {
    return dataTable;
}

public void setDataTable(HtmlDataTable dataTable) {
    this.dataTable = dataTable;
}

您的删除方法应该是这样的

public String deleteActor(){
    Actor model = (Actor) dataTable.getRowData();
    removeActorWithId(model);
    return "/allActors.xhtml";
}

private void removeActorWithId(Actor model){
    if(model!=null){
        allActors.remove(model);
    }
}
窦志新
2023-03-14

我建议你让表单标签包含你的数据。这是有效的:

<h:form id="actorsTableForm">
            <p:dataTable id="actorsTable" var="item"
                value="#{actorsMB.actorList}" selectionMode="single"
                rowKey="#{item.description}" paginator="true" rows="10"
                paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                rowsPerPageTemplate="5,10,15" paginatorPosition="bottom">
                <p:column headerText="Actor Id" >
                    <h:outputText value="#{item.id}" />
                </p:column>
                <p:column headerText="Actor Description">
                    <h:outputText value="#{item.description}" />
                </p:column>
                <p:column>
                    <p:commandButton icon="ui-icon-trash"
                        title="Delete this actor"
                        actionListener="#{actorsMB.remove(item)}"
                        ajax="false" />
                </p:column>
            </p:dataTable>
</h:form>

以及托管bean中的方法:

public void remove(Actor actor) {
    try {
        actorService.remove(actor);
        actorList = actorService.searchAll();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

希望有帮助。

 类似资料:
  • 嘿,伙计们,我需要帮助删除这个按钮并从json文件中加载数据,而不需要点击这个按钮。下面是代码 //从json文件获取内容 @重写小部件构建(BuildContext上下文){Future readJson()异步{final String response=await rootBundle.loadString('assets/aaaa.json');final data=await json.

  • 我如何删除Linkedlist中的对象。我有一个类帐户,里面有学生ID和学生名称。我输入列表中的对象,但是当我试图删除时,我不知道如何做。因为每次你从列表中间删除一个元素,它就会变得有组织,这意味着索引会改变。所以我如何获得学生ID属性并删除LinkedList中的对象。 样本: 我想让用户插入他想要删除的studentId,我可以做一个搜索和删除该对象的代码。 每次我从中间删除一个对象,它就会改

  • 我正在使用javascript定义对象数组,并希望根据对象属性删除值。 我用了下面的代码: 预期结果:当我删除值时,它应该给我一个包含0个元素的数组。 实际输出:当我删除值时,我得到的数组有1个元素,元素值为null。

  • 我有以下型号: 当我运行下面的查询时,用户模型也被删除 有没有办法在不删除用户的情况下删除问题? 我试着重复这些问题但没有用 我认为查询集是懒惰的,所以也许我需要在删除之前评估它,所以我打印了它,但这不起作用。 我知道,将ForeignKey设置为null将为我提供诸如clear和remove之类的方法,但我不想这样做,因为我不希望出现任何孤立的用户问题。 我更新了ForeignKey,如下所示

  • 问题内容: 如何删除由jQuery UI创建的对话框上的关闭按钮(右上角的 X )? 问题答案: 我发现这最终成功了(请注意,第三行覆盖了打开功能,该功能查找按钮并将其隐藏): 要隐藏所有对话框上的关闭按钮,您也可以使用以下CSS:

  • 如您所见,我制作了对话框,displaynotedate用于读取与金额相关的其他数据,并在对话框中读取: