我正在使用jsf的Web应用程序,我对此很陌生。
有一个用户填写并发送的表单。服务器在后备 Bean 中接收表单,执行所需的操作并重定向到不同的页面。
问题是,当用户点击浏览器的后退按钮时,它会返回到表单,所有字段都填充了用户引入的数据。我需要清理该表格。
我尝试在页面加载时手动清理字段,但它不起作用,表单会用以前的数据重新填充。
对这个问题有任何帮助吗?
提前谢谢。
两个可能的问题:
-
您的浏览器出于礼貌填写了这些值,请使用缓存控制或使用全面的 CacheControlFilter 禁用它,您可以通过
web.xml
启用它。另请参阅如何在 JSF 的表单级别执行 autocomplete="off",以防止浏览器的自动完成函数填充以前的值。 -
保存这些值的服务器端代码仍然有效。您没有提到您使用哪个范围,但请记住,@ViewScoped bean 和会话中存储的基本上所有内容不一定会在导航时被销毁。如果您无法管理 Bean 的生命周期以使其自动销毁,则需要在重定向之前自行重置表单值:
@ManagedBean @SessionScoped public class TestBean implements Serializable { private String myString; public String saveIt() { doStuffWithString(); myString = ""; return "saved"; } }