2010-04-19 183 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