如何刷新以前在jsf中插入的表单值?

时间:2014-10-24 10:56:26

标签: java javascript jquery jsf primefaces

  

在我的应用程序中,我在点击提交按钮时在数据库中添加表单数据。但问题是,当用户刷新页面时,数据再次添加到数据库中等等......

     

有什么可以解决这个问题,请一些机构给我这个问题的良好链接/解决方案......

     

非常感谢。

代码:

<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; 
  } 
}

2 个答案:

答案 0 :(得分:0)

还要避免在JSF中使用void方法。如果要返回到同一页面,请使用相同的页面viewid。 尝试输入以下代码:

public String submit() {
    // ...

    return "viewid?faces-redirect=true";
}

引用来自此link

答案 1 :(得分:0)

这可能是由几个因素引起的:

1 - 每次显示视图时,都会调用在数据库中添加项目的功能。

这可能是由上述方法的@PostConstruct注释引起的。这也可能是由从视图中调用此方法的元素引起的。

2 - 在数据库中插入对象的方法是持久化2个对象

3 - 您的表单不止一次提交

4 - 您在观察

时插入了第二个对象