将过期的会话变量值传递给后续请求

时间:2011-10-06 05:21:34

标签: jsp session jsf tomcat

我有一个JSf应用程序,用户从另一个站点调用该应用程序(假设是test.com)。从test.com调用我的应用程序时,它会向我发送一个get参数,并根据该参数确定需要应用哪个样式表。

示例电话:myapp.com?style=aaa

基于样式参数我正在为myapp应用样式表。在这里,我从样式参数值中找到样式表,并将其保存在会话中以供在其他页面中使用。

问题:

当tomcat会话过期时,我会丢失我的样式信息,我的网站会转到默认样式表(用户按浏览器重新加载按钮或在会话到期后提交表单)。即使在会话到期后,我仍然可以保留样式表信息。

我不能将样式信息作为应用程序级别参数,因为它是基于test.com调用的更改。

感谢

2 个答案:

答案 0 :(得分:1)

如果您只想记住样式表,那么将样式表参数写入cookie而不是HttpSession可能会更好。这样,当会话过期并且用户返回时,他们仍将看到他们选择的样式表。

但是,如果他们删除了他们的cookie或您的cookie过期,那么他们将获得默认样式表。

快速谷歌提出了这个cookie示例http://gthill.blogspot.com/2008/01/cookies-in-jsf.html

答案 1 :(得分:0)

  

一位用户可能在myapp.com上有很多登录信息。因此,可以通过myapp.com?style=aaa,myapp.com?style = bbb等单一浏览器拨打多个电话。因此使用cookie可能很困难。

您需要继续将样式作为请求参数传递,方法是将<f:param>添加到所有表单和所有JSF页面中的链接。

E.g。

<h:link value="link" outcome="nextpage">
    <f:param name="style" value="#{param.style}" />
</h:link>

<h:commandButton value="submit" action="#{someBean.someAction}">
    <f:param name="style" value="#{param.style}" />
</h:commandButton>