首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >成功提交后重置表单的输入字段

成功提交后重置表单的输入字段
EN

Stack Overflow用户
提问于 2013-03-28 04:42:42
回答 2查看 4.1K关注 0票数 0

我有一个表单,可以创建一个新的Employee。我的支持bean是@SessionScoped。当我创建第一个员工时,一切都很顺利。但是,当我要创建第二个employee时,表单仍然在输入字段中显示第一个employee的属性。

如何在不更改bean作用域的情况下重置它们?该作用域对于其他目的是强制的。我使用了一个托管Bean (控制器),其中我使用了"Create employe“

代码语言:javascript
运行
复制
public String createEmploye()

{

    employe = new Employe();

    employe.setId(this.id);
    employe.setNom(this.nom);
    employe.setPrenom(this.prenom);
    employe.setNum_telephone(this.num_telephone);
    employe.setAdresse(this.adresse);
    employe.setNum_poste(this.num_poste);

    employeBean.addEmploye(employe);

    employe.setNom("");

    return "ListEmployes.xhtml?faces-redirect=true";
    // return ("ListEmployes.xhtml");

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-28 04:47:22

在数据库中保存Employee实例后,重新创建该实例。

代码语言:javascript
运行
复制
public void save() {
    service.save(employee);
    employee = new Employee(); // <--- Just add this line.
}

对于与具体问题无关的,我强烈建议重新考虑您的bean设计。难道不应该把它一分为二吗?一个请求/视图作用域用于表单本身,另一个会话作用域用于注入到请求/视图作用域的实际会话作用域数据。这样,在保存之后,您只需执行重定向到相同的视图,以便从一个干净的表单开始(并且具有额外的好处,即当您在提交后刷新页面时,完全相同的员工不会在数据库中重复)。

另请参阅:

更新根据更新,您似乎是在复制/扁平化支持bean中的Employee的所有属性,而不是让表单直接引用它们。我强烈建议不要将模型属性复制/展平到控制器中。

代码语言:javascript
运行
复制
@ManagedBean
@SessionScoped
public class Manager {

    private Employee employee = new Employee();

    @EJB
    private EmployeeService service;

    public void createEmployee() {
        service.create(employee);
        employee = new Employee();
    }

    public Employee getEmployee() {
        return employee;
    }

}

使用

代码语言:javascript
运行
复制
<h:inputText value="#{manager.employee.firstname}" />
<h:inputText value="#{manager.employee.lastname}" />
<h:inputText value="#{manager.employee.telephone}" />
<h:inputText value="#{manager.employee.street}" />
...
票数 1
EN

Stack Overflow用户

发布于 2017-11-07 00:03:15

我可以通过创建一个方法来使对象无效并在页面jsf上的表单中调用它来解决这个问题。

代码语言:javascript
运行
复制
public void clear_objet() {
  this.producto = null;
}
代码语言:javascript
运行
复制
<h:form id="form">
  #{bean.limpiar_objeto()} 
</h:form>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15669028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档