[英]How to add a session attribute in a forEach loop in jsp?
我是 Java 初学者,需要一些帮助。 我正在开发一个允许用户管理其文本项目的 Web 应用程序。 我使用 Spring 作为框架并且必须使用 MVC 模型。
一个用户可以有多个项目。 它们都显示在“我的项目”视图中。 所有项目的列表都在 foreach 循环中管理。
我想让这些项目项可点击:当用户点击项目时,它必须在新页面中打开。 为此,我必须传递有关被点击的项目的信息。 我正在尝试将项目名称从 jsp 附加到会话,但编译器不接受 onlick 部分。 我这部分的代码摘要如下:
<c:forEach var="project" items="${showProject}">
<div class="manageListItem" onclick="window.location.assign('/myProjects.secu', 'currentProject.secu')";"<%session.setAttribute("project", ${project.title});>
<td><c:out value="${project.title}"/></td>
</c:forEach>
有谁知道我如何解决这个问题? 我会很感激任何帮助。
最好的问候,玛莎
将 java 代码段放在 jsp 视图中通常是一个坏主意。 你的情况应该使用MVC模式。 您需要在 servlet 中创建一个 servlet 以获取项目列表:
// import omitted
@WebServlet("/getProjects")
public class ProjectServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// service layer that can get a list of projects
ProjectService projectService = new ProjectService();
List<Project> projectList = projectService.getListOfProjects();
request.setAttribute("showProject", projectList);
request.getRequestDispatcher("/projects.jsp").forward(request,response);
}
}
在你的projects.jsp
<c:forEach var="project" items="${showProject}">
<div>
<a href="/your/project/singleProjectServlet?pid=${project.id}">${project.title}</a>
</div>
</c:forEach>
在 singleProjectServet 中,您将获得pid查询参数并执行您想做的任何操作,例如检索项目详细信息或将其保存在会话中。
以下是在 Servlet 中的会话中保存对象的方法:
request.getSession().setAttribute("project", projectObject);
将初学者可能需要做的所有事情都放在这个小的答案区域中是非常困难的。 希望我的回答能引导你走向正确的方向。 在你做任何其他事情之前,强烈推荐这本书:
Murach 的 Java Servlets 和 JSP,第 3 版(Murach:培训和参考)
网上也有很多简单的教程可以帮助你入门,搜索关键词“jsp servlet mvc”即可。
快乐编码,希望它有所帮助。
您的双引号数量错误。
你为什么不简化你的表达并一个接一个地添加东西?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.