【问题标题】:Screen resolution parameter setup, session bean and JSF Phase Listener屏幕分辨率参数设置、会话 bean 和 JSF Phase Listener
【发布时间】:2012-10-24 00:04:15
【问题描述】:

我目前面临以下问题,如果有人可以在这里帮助我,我将不胜感激。我对 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,传递必要的屏幕大小分辨率,当创建第一页时,必要的参数已经到位。

我不完全确定我是否以正确的方式执行此操作,但我们将不胜感激任何建议、指向正确资源的链接。

【问题讨论】:

    标签: jsf session servlets javabeans phase


    【解决方案1】:

    过程:

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

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

    3. 您的 javascript 发回屏幕尺寸

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

    【讨论】:

    • SJuan,感谢您的回复,我正在考虑重新加载选项,然后确保支持 bean 具有来自客户端的必要参数,从而创建具有正确尺寸的 JSF 元素,但我尽量避免不必要的重新加载。
    • 如果我要实现这个解决方案,我将如何检查会话是否是新的,isNew() 方法是否足以满足此目的?
    • 您可以检查是否设置了屏幕属性。这种方法的问题在于,如果某人的浏览器不发送 JS,它就会中断。
    • 谢谢,我会再试一次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    相关资源
    最近更新 更多