PrimeFaces数据表不添加操作后正确地刷新

问题描述 投票:2回答:1

我有一个具有添加编辑删除和过滤操作的数据表。

所有的操作都在数据库上工作正常,但在数据表上没有添加操作后正确更新。

这是第一次添加操作后正确更新。当我添加第二行的数据表被更新,但它最早加入该行被置换成加入第二,但在DB他们正确地更新的行。

同样,当我添加第三行的第一行替换为第3行。

在CRUD dataTable的应用程序中使用的软件栈是: - PrimeFace 3.4.2,JSF 2.1,NetBeans的7.2.1,Java的GlassFish的1.6.0_37 3.1.X中,MySQL 5.x的

这是我的代码。

 **xhtml page**

 <html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:p="http://primefaces.org/ui">

 <h:head>
    <title>Prime Faces Data table</title>
 </h:head>
 <h:body>
    <h:form id="form1">

        <h:messages id="messages1"/>
        <br/>

        <p:commandButton id="Addbtn" value="Add" oncomplete="AddDialog.show()" 
         update=":addform"/>                
        <br/>

        <p:dataTable id="dtusers" value="#{userdataController.retrieveData()}" 
         var="item" 
                     rows="8" paginator="true" emptyMessage="No Records Found" 
                     paginatorAlwaysVisible="false">

            <p:column style="width:150px" filterMatchMode="contains" 
             filterBy ="#{item.id}">
                <f:facet name="header"> Id </f:facet>
                <h:outputText value="#{item.id}"/>
            </p:column>

            <p:column style="width:150px" filterMatchMode="contains" 
             filterBy="#{item.name}">
                <f:facet name="header"> Name </f:facet>
                <h:outputText value="#{item.name}"/>
            </p:column>     

            <p:column style="width:150px">  
                <p:commandButton id="editButton" update=":editform" 
                   oncomplete="EditDialog.show()" value="Edit">
                    <f:setPropertyActionListener value="#{item}" 
                     target="#{userdataController.selectedUser}"/>
                </p:commandButton>                       
            </p:column>

            <p:column style="width:150px">  
                <p:commandButton id="deleteButton" update=":deleteform" 
                   oncomplete="UserDialog.show()" value="Delete">
                    <f:setPropertyActionListener value="#{item}" 
                      target="#{userdataController.selectedUser}"/>
                </p:commandButton>    
            </p:column>                 

        </p:dataTable>
    </h:form>   
      <p:dialog header="Add User Data" resizable="false" id="AddDialog" 
        widgetVar="AddDialog" modal="true" showEffect="fade" hideEffect="fade" 
        position="center" >
        <h:form id="addform">
            <p:outputPanel id="AddDisplay">

                <p:panelGrid columns="2" >

                    <f:facet name="header">
                        Add Userdata
                    </f:facet>

                    <h:outputLabel for="Id" value="Enter Id:"/>
                    <p:inputText id="Id" value="#{userdataController.selected.id}" />

                    <h:outputLabel for="Name" value="Enter Name:"/>
                    <p:inputText id="Name" 
                      value="#{userdataController.selected.name}"/>

                    <p:commandButton  actionListener="#{userdataController.createdata}" 
                        update=":form1:dtusers :form1:messages1" value="Save"    
                      oncomplete="AddDialog.hide()" style="margin:0"/> 


                 </p:panelGrid>
                </p:outputPanel>
        </h:form>
        </p:dialog>   
         //similarly dialogs for delete and edit   

        </h:body>

         </html>


      **ManagedBean**

    @ManagedBean(name = "userdataController")
    @SessionScoped
    public class UserdataController implements Serializable {

    private Userdata current;
    private DataModel items = null;
    @EJB
    private PrimeFacesDb.session.UserdataFacade ejbFacade;
    private int id;
    private String name;
    private Userdata SelectedUser;

    public UserdataController() {
   }
 //getters setters for id,name and SelectedUser

  private UserdataFacade getFacade() {
    return ejbFacade;
  }
  public List retrieveData() {
    List result = getFacade().findAll();
    return result;
  }

   public void create() {
    try {
        getFacade().create(current);
        JsfUtil.addSuccessMessage("Userdata created successfully");
    } catch (Exception e) {
        JsfUtil.addErrorMessage(e, "Persistence Error occured");
    }
  }
 }
jsf-2 primefaces
1个回答
0
投票

使用过程=“:窗口2:添加显示”,我认为这是你的问题,因为这个过程默认它的全貌,或者你有一个缓存在你的findAll()或现在杰杰奥

© www.soinside.com 2019 - 2024. All rights reserved.