java jsp返回对象的地址

时间:2015-07-21 15:18:00

标签: java jsp servlets

我有下一个情况。 对于JSP我转发对象列表类别并迭代它:

<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <c:forEach var="category" items="${categories}">
            <a href="/mytest/projects?category=${category}"><c:out value="${category.id} - ${category.name}"/></a><p>
        </c:forEach>
    </body>

</html>

结果显示了指向特定项目的链接列表。现在问题是JSP将对象 $ {category} 的地址返回为String,如:

projects?category=data.Category@6892b54

如何通过servlet中的地址访问此对象?我可以返回其 id 并仅通过新类别( id 启动,但我强烈认为有一种方法可以访问已存在的对象

在servlet中,我尝试使用我所知道的对象:

Category category = req.getParameter("category");

但编译器返回错误,即String无法转换为Category((

1 个答案:

答案 0 :(得分:2)

${category}正在对名为category的属性进行引用。此属性可以位于请求,会话或应用程序范围中。如果您直接在jsp中使用它:

${category}

它会调用那里找到的对象的toString方法。由于您没有覆盖该方法,因此它使用Object#toString

为了避免这一切,您应该将实体的一些标识符作为参数传递给查询字符串。从你的代码中,这应该做:

<a href="/mytest/projects?category=${category.id}">

在控制器中,您预先处理GET请求,读取参数"category"并进行正确的数据查找。