0

我使用 JSF 2.2 和漂亮的面孔。我想防止与浏览器向后功能相关的安全问题。

要在我的应用程序中恢复我的页面之间的导航链接:我有一个使用 Spring Security 完成的登录页面,它在连接到主页后重定向。主页位于 ViewScoped 中。从这个主页,我可以转到 ViewScoped 中的 AddPatientPage 和 SessionScoped 中的 AddAnalysePage。

当用户在 AddP*Page 上时,如果他单击浏览器后退按钮,我不想使用缓存页面。我想要一种页面的重定向/刷新。我希望主页使用初始值,因为它是第一次加载。

我试图应用此解决方案但没有成功...例如,当我从 Add*Page 返回主页时,SelectOneMenu 中的值不是初始值,而是最后选择的值。所以我相信现金仍在使用......在测试之前,我从浏览器中清除了缓存文件。

谢谢您的帮助。

正如上一篇文章中的 BalusC,我不使用注释,而是直接引用 web.xml 中的过滤器,如上所述。

<filter>
     <filter-name>noCacheFilter</filter-name>
     <filter-class>com.clb.genomic.lyon.servletFilter.NoCacheFilter</filter-class>
</filter>
<filter-mapping>
     <filter-name>noCacheFilter</filter-name>
     <url-pattern>*.jsf</url-pattern>
    <url-pattern>*.xhtml</url-pattern>
</filter-mapping>

* 编辑 :*

使用不同的词,问题是当我使用后退按钮时,页面组件的值与其支持 bean 不同。所以我不明白哪些被跟踪,哪些不在范围内。

* 编辑2:*

好的,我放弃了 ajax 调用。ajax 调用的想法是,当您从第一个表单中选择 SelectOneMenu 中的值时,然后将结果注入到另一个表单和另一个表单中,另一个 SelectOneMenu 和一个命令按钮将所有值一起发送。向后按钮兼容性处理起来很麻烦。所以现在我把两个selectOneMenu放在一个没有ajax的独特形式中,它运行良好......没有问题,后退按钮和SelectOneMenu的bean和页面值之间的同步......

我希望有人明白我想做什么:)

4

1 回答 1

2

如果您使用的是 PrettyFaces,过滤器配置将无法按预期工作。通常,您有某种漂亮的 URL(例如/home),然后将其转发到真正的 JSF URL(例如/home.jsf)。

使用您发布的配置,过滤器将不会应用于转发的请求。您必须像这样更新配置:

<filter>
     <filter-name>noCacheFilter</filter-name>
     <filter-class>com.clb.genomic.lyon.servletFilter.NoCacheFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>noCacheFilter</filter-name>
   <url-pattern>*.jsf</url-pattern>
   <url-pattern>*.xhtml</url-pattern>
   <dispatcher>REQUEST</dispatcher>
   <dispatcher>FORWARD</dispatcher>
</filter-mapping>
于 2013-10-30T08:13:24.407 回答