2010-04-19 133 views

回答

9

在Servlet中,你可以要求通过作用域bean:

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

和会议通过作用域bean:

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

和应用的作用域bean:

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

据因为我知道bean并不一定由JSF热切地实例化。所以如果在通过JSF层之前没有访问bean,这将失败。 – lexicore 2010-04-19 19:06:24

+1

@lexi:这是正确的。但是,如果您需要自己实例化这些bean而不是抓取已创建的bean,那么在方法/设计中会出现更多错误。要么任务完全由JSF bean完成,要么完全不需要JSF来执行特定的任务。很难说,因为OP的实际功能要求是模糊的。请记住,Servlet基本上只是一个页面/前端控制器,FacesServlet已经完成的工作。也许这个servlet做得太多了,或者OP在JSF bean中没有做到这一点。 – BalusC 2010-04-19 19:16:06

+0

我可以按照你的论证,但不完全同意。可以使用JSF进行Bean管理,并使用非Faces servlet进行前端处理,这种方式不适合JSF。例如,像DWR的东西。我个人而言,我通常更喜欢Spring的DI而不是JSF托管的bean,但是JSF对于bean管理来说已经足够了。 – lexicore 2010-04-19 19:27:02