JSF:当用户点击浏览器的历史记录时,如何避免表单填写数据?



我正在使用jsf的Web应用程序,我对此很陌生。
有一个用户填写并发送的表单。服务器在后备 Bean 中接收表单,执行所需的操作并重定向到不同的页面。
问题是,当用户点击浏览器的后退按钮时,它会返回到表单,所有字段都填充了用户引入的数据。我需要清理该表格。
我尝试在页面加载时手动清理字段,但它不起作用,表单会用以前的数据重新填充。
对这个问题有任何帮助吗?

提前谢谢。

两个可能的问题:

  1. 您的浏览器出于礼貌填写了这些值,请使用缓存控制或使用全面的 CacheControlFilter 禁用它,您可以通过 web.xml 启用它。另请参阅如何在 JSF 的表单级别执行 autocomplete="off",以防止浏览器的自动完成函数填充以前的值。

  2. 保存这些值的服务器端代码仍然有效。您没有提到您使用哪个范围,但请记住,@ViewScoped bean 和会话中存储的基本上所有内容不一定会在导航时被销毁。如果您无法管理 Bean 的生命周期以使其自动销毁,则需要在重定向之前自行重置表单值:

    @ManagedBean @SessionScoped 
    public class TestBean implements Serializable {
        private String myString;
        public String saveIt() {
            doStuffWithString();
            myString = "";
            return "saved";
        }
    }
    

最新更新