删除更新后未反映在数据表中的行

时间:2017-01-06 22:23:54

标签: ajax primefaces jsf-2 datatable

我的删除按钮将从数据库中删除一个条目,但不会从primefaces中的实际数据表中删除。直到您使用过滤器更改或F5 /新会话刷新它。

我已经看过这个问题的其他各种答案,而且我还是空白了。我已经尝试搞乱更新并使用oncomplete =“PF('datalistWidget')。filter()”等等。

使用primefaces 6.0和glassfish 4.1。任何帮助赞赏。 我粗略地遵循了http://www.oracle.com/technetwork/articles/java/java-primefaces-2191907.html的教程,然后添加了我自己的自定义。托管bean和外观等...都与数据库创建的类的教程类似。我没有在glassfish日志中看到任何错误。

数据表

<p:dataTable id="datalist" value="#{chemicalChemicalController.items}" var="item"
         selectionMode="single" selection="#{chemicalChemicalController.selected}"
         paginator="true"
         editable ="true"
         rowKey="#{item.chemKey}"
         rows="10" 
         widgetVar="datalistWidget"
         rowsPerPageTemplate="10,20,30,40,50"
         filteredValue="#{chemicalChemicalController.itemsFiltered}"
         >

删除命令按钮

<p:commandButton id="deleteButton" icon="ui-icon-trash"
value="#{bundle.Delete}" actionListener="#{chemicalChemicalController.destroy}" 
update=":growl, datalist" disabled="#{empty chemicalChemicalController.selected}"/>

控制器删除命令

   public void destroy() {
    persist(PersistAction.DELETE, ResourceBundle.getBundle("/Bundle").getString("ChemicalChemicalDeleted"));
    if (!JsfUtil.isValidationFailed()) {
        selected = null; // Remove selection
        items = null;    // Invalidate list of items to trigger re-query.

    }
}

1 个答案:

答案 0 :(得分:0)

使用从对象中删除来销毁方法。

public void destroy(SelectEvent event) {
    persist(PersistAction.DELETE, ResourceBundle.getBundle("/Bundle").getString("ChemicalChemicalDeleted"));
    if (!JsfUtil.isValidationFailed()) {
        selected = null; // Remove selection
        items = null;    // Invalidate list of items to trigger re-query.

    }

    RowObj rowObj = (RowObj) event.getObject();// here Row Object is your selected row item.
   if(items != null)
   {
      //iterate items and delete matched with selected row object 
   }
}