我有一个JSf应用程序,用户从另一个站点调用该应用程序(假设是test.com)。从test.com调用我的应用程序时,它会向我发送一个get参数,并根据该参数确定需要应用哪个样式表。
示例电话:myapp.com?style=aaa
基于样式参数我正在为myapp应用样式表。在这里,我从样式参数值中找到样式表,并将其保存在会话中以供在其他页面中使用。
问题:
当tomcat会话过期时,我会丢失我的样式信息,我的网站会转到默认样式表(用户按浏览器重新加载按钮或在会话到期后提交表单)。即使在会话到期后,我仍然可以保留样式表信息。
我不能将样式信息作为应用程序级别参数,因为它是基于test.com调用的更改。
感谢
答案 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>