我的第一个JSF页面正在抛出javax.faces.application.ViewExpiredException
。当我搜索时,我得到了解决我问题的解决方案。
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
但我担心安全隐患。
答案 0 :(得分:5)
这根本不会在客户端保存“会话”。
这只保存客户端的JSF视图状态。这是在JSF 2.2中始终使用在应用程序启动时生成的密钥进行AES加密。但是,一旦重新启动应用程序,此操作就会失效,从而导致所有现有视图状态变为无效。您可以在web.xml
中指定固定密钥,以便所有现有视图状态在服务器重新启动时保持有效:
<env-entry>
<env-entry-name>jsf/ClientSideSecretKey</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>[AES key in Base64 format]</env-entry-value>
</env-entry>
您可以使用this page生成Base64格式的随机AES密钥。