Jsf 2 datatable未更新
通过confirmDialog删除数据表的所有元素后,数据表不会更新,并保持填充状态Jsf 2 datatable未更新,jsf-2,primefaces,Jsf 2,Primefaces,通过confirmDialog删除数据表的所有元素后,数据表不会更新,并保持填充状态 <h:form id="form"> <p:dataTable rowIndexVar="rowIndex" id="tabledatas" value="#{MB.datas}" var="item" rowsPerPageTemplate="5,10,15" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {Previ
<h:form id="form">
<p:dataTable rowIndexVar="rowIndex" id="tabledatas" value="#{MB.datas}" var="item" rowsPerPageTemplate="5,10,15" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
paginator="true" rows="10" styleClass="case-table" emptyMessage="No records found with given criteria" paginatorPosition="bottom"
filteredValue="#{mailMB.filteredDAtas}" rowKey="#{item.id}"
selection="#{MB.selectedAta}" selectionMode="single" >
<p:ajax event="rowSelect" update=":form"/>
<p:column styleClass="blockable" filterStyle="width: 250px" filterBy="#{item.data} " sortBy="#{item.data}">
<f:facet name="header">
<h:outputText value="Data"/>
</f:facet>
<h:outputText value="#{item.data}"/>
</p:column>
</p:dataTable>
</h:form>
<p:confirmDialog style="position: absolute; size: auto; width: 50px; border-color: blue" id="confirmPurchase" message="Your Database was successfully created. And contains #{MB.number} Datas "
appendToBody="true"
header="Buy Datas List" severity="info" widgetVar="purchase">
<h:form>
<p:commandButton id="decline" value="Decline" actionListener="#{MB.deleteData()}" update=":form:tabledatas" ajax="true" oncomplete="purchase.hide();" />
<p:commandButton id="Later" value="Later" onclick="purchase.hide();" type="button" />
</h:form>
</p:confirmDialog>
商业方法
public String deleteData() {
logger.log(Level.SEVERE, "*****delete datas***** ");
dataBusinessLocal.deleteDatas(datas);
logger.log(Level.SEVERE, "*****delete Data***** ");
dataBusinessLocal.deleteData(data);
return "home";
}
@Override
public void deleteDatas(ArrayList<Data> datas) {
for (int i = 0; i < datas.size(); i++) {
dataManagerLocal.deleteData(datas.get(i));
}
}
显然,您已经从数据库中删除了数据,但忘记了清除
@ViewScoped
bean的{MB.datas}
所指出的列表。datatable组件只需重新提交尚未清除的已获取数据
补救方法非常简单:在执行业务逻辑后,通过调用
datas.clear()清除操作方法中的列表代码>显然,您的XHTML看起来不错。你能编辑你的帖子并包含bean方法和DAO方法吗?@rodolfoperatoni删除方法被正确调用。我从数据库和glassfish日志中查看您提供的xhtml用于您的主页?@Adarsh Yes home.xhtmlha您是否尝试删除ajax和更新属性?如果您从action方法返回视图,页面仍将刷新。除非,你不想因为某种原因发生这种事。
@Override
public boolean deleteData(Data data) {
logger.log(Level.SEVERE, "delete data");
if (findData(data)) {
this.em.remove(em.merge(data));
return true;
}
return false;
}