我有下一个情况。 对于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((
答案 0 :(得分:2)
${category}
正在对名为category
的属性进行引用。此属性可以位于请求,会话或应用程序范围中。如果您直接在jsp中使用它:
${category}
它会调用那里找到的对象的toString
方法。由于您没有覆盖该方法,因此它使用Object#toString
。
为了避免这一切,您应该将实体的一些标识符作为参数传递给查询字符串。从你的代码中,这应该做:
<a href="/mytest/projects?category=${category.id}">
在控制器中,您预先处理GET请求,读取参数"category"
并进行正确的数据查找。