【问题标题】:Forwarding from Servlet to JSP从 Servlet 转发到 JSP
【发布时间】:2011-06-25 19:26:07
【问题描述】:

我正在尝试实现 MVC2 模型。 我有一个 Servlet,它从会话 bean 中获取数据并将实体从 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 中:我从请求中获取用户,如果我使用 scriptlets 标签,我可以打印它的名称,但是当我使用 EL 时,什么都不会打印:

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

我应该如何将会话 bean 包含/转发到 JSP 中以便能够使用 EL(并避免使用 scriptlet)?
这是实现模型视图控制器的首选方式吗?

【问题讨论】:

  • 标题和问题有点混乱。您不是从会话 bean 转发,而是从 Servlet 转发。如果您对英语动词“转发”的解释是“存储到范围中”,那么这也不适用。您正在将会话 bean 的调用结果存储到作用域中。这个问题似乎不需要整个会话 bean 和 ejb-3.1 标记。

标签: model-view-controller jsp el


【解决方案1】:

EL 使用请求属性。您没有 currUser 作为请求属性。如果您尝试${user.name},它将起作用。

我不确定您所说的“会话 bean”是什么意思。 EJB 是会话 bean,但您没有在视图中显示任何关于它的内容。但无论如何 - EJB 不应该在视图中访问。

简而言之 - 您使用的是正确的方法 - 只需将 EL 与您设置的属性一起使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 2012-04-23
    相关资源
    最近更新 更多