jsf清除表格

时间:2012-10-24 14:56:53

标签: jsf-2 richfaces

我需要帮助。我是JSF的新手,我在项目中使用 JSF2 和richfaces。

我想在刷新按钮中清除我正在使用<f:ajax render="@form"/>的表单。我在屏幕上有一个ADD按钮,它添加了一条记录,然后我点击刷新然后它将进入默认页面。但是当我再次输入记录时,我之前输入的那些值仍保留在表单字段中。

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

当您说“我点击刷新”时,假设您的意思是浏览器的刷新按钮,那么如果您错误地将持有视图范围数据的bean放在会话范围内,则会发生这种情况。然后,您基本上重复使用与之前提交的表单相同的bean。将bean放在视图范围而不是会话范围中应解决此问题。当您导航到其他页面或触发新请求时(例如,通过点击浏览器的刷新按钮),视图范围结束。

另见:


更新如果由于设计不当限制使用会话范围,那么您可能想要通过

来解决这个问题
<f:event type="preRenderView" listener="#{sessionScopedBeanWhichShouldActuallyBeViewScoped.resetModel}" />

public void resetModel() { 
    if (!FacesContext.getCurrentInstance().isPostback()) {
        model = null;
    }
}

这将清除每个GET请求的模型。但是,无论此hack如何,当最终用户在同一会话中的不同浏览器选项卡/窗口中打开相同视图时,您仍会遇到严重问题。

正确的解决方案是将bean放在视图范围而不是会话范围中,如前所述。