实现Primefaces commandButton以便以最直观的方式在CRUD应用程序中保存处理浏览器刷新和返回按钮的表单的最佳方法是什么?
PS:CRUD代码记入BalusC Recommended JSF 2.0 CRUD frameworks
但这使用标准<h:commandButtons>
以下是BalusC的帖子中的相关代码
<p:commandButton value="Save_A" action="#{CRUD.saveEdit()}" ajax="true" update="@all"/>
<p:commandButton value="Save_B" action="#{CRUD.saveEdit()}" ajax="false"/>
<p:commandButton value="Save_C" action="#{CRUD.saveEdit2()}" ajax="true" />
<p:commandButton value="save_D" action="#{CRUD.saveEdit2()}" ajax="false"/>
-
@ManagedBean
@ViewScoped
public class CRUD implements Serializable {
public void saveEdit() {
dao.update(item);
this.item = new ChecklistClass();
edit = false;
}
public void saveEdit2() {
dao.update(item);
this.item = new ChecklistClass();
edit = false;
util.redirectWithGet(); // <- Eliminates popup with browser refesh
}
Save_A和B我不喜欢,因为在成功提交后,如果刷新浏览器,则会弹出关于重新发送先前提交的信息的信息。
Save_C和D我更喜欢,他们似乎都直观地工作。刷新浏览器不会给你弹出窗口要求重新发送数据,后退按钮有点直观地工作。
但是对网络请求会更好吗?由于saveEdit2()有重定向,我不应该使用Ajax =“true”的p:commandButton吗?换句话说,会做双重重定向吗?