2011-02-11 125 views
1

我想實現MVC2模型。 我有一個從會話bean獲取數據,並從servlet實體轉發到一個jsp一個Servlet:從Servlet轉發到JSP

public class MyServlet extends HttpServlet{ 

@EJB UserFacade userFacade; 

//Fetch the user from the session bean 
Users currUser=userFacade.find(userName); 
... 
request.setAttribute("user", currUser); 
getServletContext().getRequestDispatcher("/index.jsp").forward(request, response); 
} 

在index.jsp中:我從請求的用戶,如果我可以打印它的名字我用小腳本標籤,但是當我使用EL沒有打印:

<@page import="Entities.Users"> 
<"Users currUser = (Users)request.getAttribute("user");"> 
<= currUser.getName() > -OK! 
${currUser.name}-Nothing is printed! 

我應該如何包含/轉發的會話bean的到JSP爲了能夠使用EL(和避免使用小腳本)?
這是實現模型視圖控制器的首選方式嗎?

+0

標題和問題有點混亂。您不是從會話bean轉發,而是從Servlet轉發。如果你對英文動詞「forwarding」的解釋是「存儲到一個範圍內」,那麼這也不適用。您將會話bean調用的結果存儲到作用域中。整個會話bean和ejb-3.1標籤對於這個問題似乎沒有必要。 – 2011-02-13 09:35:43

回答

2

EL使用請求屬性。您沒有currUser作爲請求屬性。如果你嘗試${user.name}它會起作用。

我不確定「session bean」是什麼意思。 EJB是會話bean,但在視圖中沒有顯示任何關於它的內容。但無論如何 - 在視圖中不應該訪問EJB。

總之 - 您正在使用正確的方法 - 只需使用EL與您設置的屬性。