【问题标题】:JSF Managed Beans in a ServletServlet 中的 JSF 托管 Bean
【发布时间】:2010-04-19 17:37:51
【问题描述】:

有没有办法从 servlet 访问 JSF 托管的 bean?

【问题讨论】:

    标签: jsf servlets


    【解决方案1】:

    在 Servlet 中,您可以通过以下方式获取请求范围的 bean:

    Bean bean = (Bean) request.getAttribute("beanName");
    

    和会话范围的bean:

    Bean bean = (Bean) request.getSession().getAttribute("beanName);
    

    和应用程序范围的bean:

    Bean bean = (Bean) getServletContext().getAttribute("beanName");
    

    【讨论】:

    • 据我所知,JSF 不一定会急切地实例化 bean。因此,如果之前没有通过 JSF 层访问过 bean,这将失败。
    • @lexi:没错。但是,如果您需要自己在 servlet 中实例化这些 bean 而不是获取已经创建的那些,那么方法/设计中就会出现更多错误。该任务要么完全由 JSF bean 完成,要么您根本不需要 JSF 来完成特定任务。很难说,因为 OP 的实际功能需求是模糊的。请记住,Servlet 基本上只是一个页面/前端控制器,FacesServlet 已经完成了这项工作。也许 servlet 做的太多,或者 OP 根本无法在 JSF bean 中做同样的事情。
    • 我可以理解你的论点,但不完全同意。可以将 JSF 用于 bean 管理,将非 Faces servlet 用于前端,这不太适合 JSF。例如,像 DWR 这样的东西。就我个人而言,我通常更喜欢 Spring 用于 DI 而不是 JSF 管理的 bean,但是在很多情况下 JSF 对 bean 管理来说已经绰绰有余了。
    猜你喜欢
    • 2012-08-27
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 2014-03-19
    • 1970-01-01
    • 2012-10-13
    • 2011-07-10
    相关资源
    最近更新 更多