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.x 这是我的密码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
**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建议的代码,解决了我的问题:现在,在添加操作之后,表正在正确更新。您应该添加此答案和详细信息并接受它!是的,请加上一个真正好的答案!