【问题标题】:How can I reset form after save?保存后如何重置表格?
【发布时间】:2012-03-07 03:29:15
【问题描述】:

我正在 PrimeFaces 对话框中制作产品插入表单。我的 bean 的范围是会话。我可以插入一个产品,但是当我尝试插入另一个产品时,表单有以前的产品信息。我想重置表格。我试过UIInput,但它不起作用。如何清除表单?

【问题讨论】:

    标签: html jsf-2 primefaces


    【解决方案1】:

    保存后只需创建一个新产品,并确保您在保存后对表单进行 ajax 更新。

    例如

    <h:form>
        <h:inputText value="#{productController.product.name}" />
        <h:inputTextarea value="#{productController.product.description}" />
        <h:selectOneMenu value="#{productController.product.category}">
            <f:selectItems value="#{applicationData.categories}" />
        </h:selectOneMenu>
        <p:commandButton value="Save" action="#{productController.save}" update="@form" />
    </h:form>
    

    public void save() {
        productService.save(product);
        product = new Product();
    }
    

    顺便说一句,这种 bean 确实不属于会话范围。放在视图范围内。

    【讨论】:

    • 但这取决于范围。当我在创建新产品后放入视图范围时,它可以工作,但在会话范围中,以前的信息即将到来
    • 是的,当您使用视图范围时,您确实也可以只返回除nullvoid 之外的任何内容(例如空字符串""),那么视图将是重新创建所有属性设置为默认值。那不正是你要找的吗?那为什么还要坚持会话范围呢?
    • 会话 bean 不是必需的,但是当我在视图范围内使用时,我应该通过导航传递不同的页面我收到错误。但我转向视图范围。谢谢
    • 不客气。至于参数传递,使用h:linkf:viewParam
    猜你喜欢
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 2019-08-30
    • 2012-11-13
    • 2011-01-27
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多