Java 如何刷新以前插入到jsf中的表单值?
在我的应用程序中,我在单击提交按钮时将表单数据添加到数据库中。但问题是,当用户刷新页面时,数据会再次添加到数据库中,以此类推 什么可以解决这个问题,请一些机构给我这个问题的好链接/解决方案 非常感谢 代码:Java 如何刷新以前插入到jsf中的表单值?,java,javascript,jquery,jsf,primefaces,Java,Javascript,Jquery,Jsf,Primefaces,在我的应用程序中,我在单击提交按钮时将表单数据添加到数据库中。但问题是,当用户刷新页面时,数据会再次添加到数据库中,以此类推 什么可以解决这个问题,请一些机构给我这个问题的好链接/解决方案 非常感谢 代码: <h:commandButton value="Submit" action="#{co.createAction()}" /> public String createAction() { if (login.registerUser().equals("success"
<h:commandButton value="Submit" action="#{co.createAction()}" />
public String createAction() {
if (login.registerUser().equals("success")) {
return "index?faces-redirect=true";
} else {
return "failure";
}
}
public String registerUser() {
if (serv.createRegUser(reg)) {
return "success";
} else {
return "failed";
}
}
public boolean createRegUser(Registration reg) {
try {
initJpa();
regJpa.create(reg);
return true;
} catch(Exception e) {
e.printStackTrace();
return false;
}
}
还要避免在JSF中使用void方法。如果要返回到同一页面,请使用同一页面viewid。 请尝试输入以下代码:
public String submit() {
// ...
return "viewid?faces-redirect=true";
}
参考来自此。这可能是由以下几个因素造成的: 1-每次显示视图时,都会调用在数据库中添加项的函数 这可能是由上述方法上的@PostConstruct注释引起的。这也可能是由从视图调用此方法的元素引起的 2-在数据库中插入对象的方法是持久化2个对象 3-您的表格已提交多次
4-如果观察到数据库可能有问题,并且在刷新时向数据库添加数据,则插入了第二个对象。要获得更详细的诊断,请向我们提供更多相关的详细信息,如代码等。以下是我的代码公共字符串createAction{iflogin.registerUser.equalssuccess{return index?faces redirect=true;}else{return failure;}}}公共字符串registerUser{ifserv.createRegUserreg{return success;}else{return failed;}`public boolean createRegUserRegistration reg{try{initJpa;regJpa.createreg;return true;}catchException e{e.printStackTrace;return false;}}`@user3231655所以即使在10分钟过去之后,您仍然不介意编辑您的问题并在那里添加代码,而不是在注释中使其不可读?非常感谢,我会记住这一点。这是我的代码公共字符串createAction{iflogin.registerUser.equalssuccess{return index?faces redirect=true;}else{return failure;}公共字符串registerUser{ifserv.createRegUserreg{return success;}else{return failed;}}{public boolean createRegUserRegistration reg{try{initJpa;regJpa.createreg;return true;}catchException e{e.printStackTrace;return false;}`