1

我目前面临以下问题,如果有人可以帮助我,我将不胜感激。我对JSF很陌生...

我有一个具有以下体系结构的 JSF 应用程序: 主 index.html 站点包含一个 Javascript,它使用用户屏幕分辨率参数打开一个 XMLHttpRequest 到一个 servlet。servlet 接收请求,提取屏幕分辨率参数并将其发送到会话 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 确实有参数。我相信这意味着 index.html 在会话 bean 对象被创建之前被渲染/创建。如果我们导航到另一个站点,会话 bean 对象确实具有必要的屏幕大小值。因此,我现在可以根据用户的屏幕分辨率动态设置 JSF 元素,但只能从第二个访问页面开始。

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

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

4

1 回答 1

0

过程:

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

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

  3. 您的 javascript 发回屏幕尺寸

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

于 2012-11-03T15:12:59.910 回答