JSF:当用户在历史记录中回到浏览器时,如何避免表单填充数据?

时间:2014-02-19 09:21:57

标签: forms jsf

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

提前谢谢。

1 个答案:

答案 0 :(得分:1)

两个可能的问题:

  1. 您的浏览器会出于礼貌填写这些值,使用cache control或使用omnifaces'CacheControlFilter禁用该值,您可以通过web.xml启用该功能。另请参阅how to do autocomplete="off" at form level in JSF以防止浏览器的自动填充功能填写以前的值。

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

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