我有一个包含几行的数据表,我有一个列,其中有一个带有删除该行中对象的简单按钮的表单。
所以首先是工作版本:
<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;
}
}
}
所以这完全按预期工作。
但是,当我使用此处所示的 Primefaces 分页数据表时,删除按钮仅适用于第二种情况下的第一行,并且仅适用于第一次。当我单击其他行的“删除”按钮时,什么也没有发生。可能是什么原因?
对于第二种情况,只需将 < form > 标签放在 p:dataTable 周围,如链接中所示,并将 h:dataTable 之类的所有内容替换为 p:dataTable 和 p:column 等...