在我的应用程序中,我在点击提交按钮时在数据库中添加表单数据。但问题是,当用户刷新页面时,数据再次添加到数据库中等等......
有什么可以解决这个问题,请一些机构给我这个问题的良好链接/解决方案......
非常感谢。
代码:
<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;
}
}
答案 0 :(得分:0)
还要避免在JSF中使用void方法。如果要返回到同一页面,请使用相同的页面viewid。 尝试输入以下代码:
public String submit() {
// ...
return "viewid?faces-redirect=true";
}
引用来自此link。
答案 1 :(得分:0)
这可能是由几个因素引起的:
1 - 每次显示视图时,都会调用在数据库中添加项目的功能。
这可能是由上述方法的@PostConstruct
注释引起的。这也可能是由从视图中调用此方法的元素引起的。
2 - 在数据库中插入对象的方法是持久化2个对象
3 - 您的表单不止一次提交
4 - 您在观察
时插入了第二个对象