2011-02-11 100 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与您设置的属性。