Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 添加操作后PrimeFaces数据表未正确刷新_Jsf 2_Primefaces - Fatal编程技术网

Jsf 2 添加操作后PrimeFaces数据表未正确刷新

Jsf 2 添加操作后PrimeFaces数据表未正确刷新,jsf-2,primefaces,Jsf 2,Primefaces,我有一个datatable,它有添加、编辑、删除和筛选操作 所有操作都在数据库上正常工作,但在添加操作后datatable没有正确更新 它在第一次添加操作后正确更新。 当我添加第二行时,数据表会更新,但首先添加的行会替换为第二行,但在数据库中,数据表会正确更新 类似地,当我添加第三行时,第一行将替换为第三行 CRUD数据表应用程序中使用的软件堆栈有:-PrimeFace 3.4.2、JSF 2.1、NetBeans 7.2.1、Java 1.6.0%GlassFish 3.1.x、MySql 5

我有一个datatable,它有添加、编辑、删除和筛选操作

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

它在第一次添加操作后正确更新。 当我添加第二行时,数据表会更新,但首先添加的行会替换为第二行,但在数据库中,数据表会正确更新

类似地,当我添加第三行时,第一行将替换为第三行

CRUD数据表应用程序中使用的软件堆栈有:-PrimeFace 3.4.2、JSF 2.1、NetBeans 7.2.1、Java 1.6.0%GlassFish 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");
    }
  }
 }
**xhtml页面**
素数面数据表


身份证件 名称 添加用户数据 //类似地,用于删除和编辑的对话框 **ManagedBean** @ManagedBean(name=“userdataController”) @会议范围 公共类UserdataController实现可序列化{ 私有用户数据流; 私有数据模型项=null; @EJB 私有PrimeFacesDb.session.UserdataFacade ejbFacade; 私有int-id; 私有字符串名称; 私人用户数据选择用户; 公共UserdataController(){ } //id、名称和SelectedUser的getter设置器 私有UserdataFacade getFacade(){ 返回ejbFacade; } 公共列表检索数据(){ 列表结果=getFacade().findAll(); 返回结果; } 公共void create(){ 试一试{ getFacade().create(当前); JsfUtil.addSuccessMessage(“成功创建用户数据”); }捕获(例外e){ JsfUtil.addErrorMessage(e,“发生持久性错误”); } } }
我在以下链接中使用了Lawyno建议的代码,解决了我的问题:现在,在添加操作之后,表正在正确更新。您应该添加此答案和详细信息并接受它!是的,请加上一个真正好的答案!