屏幕分辨率参数设置,会话bean和JSF阶段监听器

时间:2012-11-03 15:00:21

标签: jsf session servlets javabeans phase

我目前正面临以下问题,如果有人能帮助我,我将不胜感激。我是JSF新手......

我有一个具有以下架构的JSF应用程序: 主index.html站点包含一个Javascript,它使用用户屏幕分辨率参数向servlet打开XMLHttpRequest。 servlet接收请求,提取屏幕resoultuion参数并将其发送到会话bean对象:

String wth = request.getParameter("width");
String hgt = request.getParameter("heigh");
HttpSession session = request.getSession(true);
Object o = session.getAttribute("mainSessionBean");
MainSessionBean mainSessionBean = (MainSessionBean) o;
mainSessionBean.setScreenWidth(wth);
mainSessionBean.setScreenHeight(hgt);

现在这可以按照自己的方式工作,问题是在第一页(index.html)会话bean对象没有参数但是如果我们导航到另一个站点会话bean确实有参数。我相信这意味着在创建会话bean对象之前会创建/创建index.html。如果我们导航到另一个站点,会话bean对象确实具有必要的屏幕大小值。所以,我现在的位置是我可以根据用户的屏幕分辨率动态设置JSF元素,但只能从第二个访问过的页面开始。

我想要实现的是Javascript向servlet启动其XMLHttpRequest,然后servlet调用会话bean,传递必要的屏幕大小分辨率,当第一页创建时,必要的参数已经到位。

我不完全确定我是以正确的方式做到这一点,但任何建议,链接到正确的资源将不胜感激。

1 个答案:

答案 0 :(得分:0)

过程:

  1. 您的浏览器向您的服务器发送HTTP请求

  2. 您的服务器初始化会话并使用index.html页面回复

  3. 您的javascript会发回屏幕尺寸

  4. 您希望如何在第2点获得屏幕尺寸?您可以做的最好的是,在第3点之后,自动重新加载index.html页面(进行检查,如果它是会话中的第一个请求只是发送JS和重定向,如果它不是发送实际的登录html)