JSP将request.getParameter转换为Entity

时间:2015-01-14 17:50:13

标签: java jsp java-ee servlets

这是方案

这是我到达servlet的jsp。有一个名为CurrentUser的实体,它拥有关于用户的多个信息字段。我想以实体的形式传递servlet关于用户的所有信息。

<a href="Controller?action=profile&entity=<%=_currentUser%>"> Information about the current user, like: name, id, profile picture etc... </a>

在servlet中:

if(request.getParameter("action").equals("profile")){
        CurrentUser _currentUser= (CurrentUser) request.getParameter("entity");
}

如果我执行一个system.out来查看“entity”参数中的内容,我会得到类似于:Package.CurrentUser@abc1235 ...并且我无法强制转换它作为实体接收它。

incompatible types: String cannot be converted to CurrentUser

有没有办法在那些字段中获得该引用和信息?

2 个答案:

答案 0 :(得分:0)

不,你不应该这样做。使用引用字符串表示法无法检索对象实例。但是您可以在查询字符串中使用String对象的ID参数。然后按ID检索对象。

<a href="Controller?action=profile&entity=<%=_currentUser.id%>"> Information about the current user, like: name, id, profile picture etc... </a>
String id = request.getParameter("entity");

答案 1 :(得分:0)

在JSP内部,将您的_currentUser实体存储为Session

<% session.setAttribute("entity", _currentUser); %>
<a href="Controller?action=profile">Information ... </a>

现在,在Controller Servlet中,您可以将此entity检索为

if(request.getParameter("action").equals("profile")){
    CurrentUser _currentUser= (CurrentUser) session.getAttribute("entity");
}

注意,理想情况下,将当前用户对象存储到Session应该由首先将请求转发给JSP的Servlet完成。不推荐在JSP中使用Java代码 scriptlet <% %>,因为JSP主要仅用于演示目的。