我是java初学者,需要一些帮助。我正在开发一个网络应用程序,允许用户管理他们的文本项目。我使用 Spring 作为框架,并且必须使用 MVC 模型。
一个用户可以拥有多个项目。它们全部显示在“我的项目” View 中。所有项目的列表在 foreach 循环中管理。
我想让这些项目项可点击:当用户点击项目时,必须在新页面中打开它。为此,我必须传递有关哪个项目被点击的信息。我试图将项目名称附加到 jsp 中的 session ,但编译器不接受 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>
有人知道如何解决这个问题吗?如果有任何帮助,我将不胜感激。
最诚挚的问候, 马斯卡
最佳答案
准备工作
- showProject 位于请求/ session /应用程序范围内,以便您的 jsp 可以使用 EL 进行访问。
- showProject 属于集合类型
MVC模式
将 java 代码片段放入 jsp View 通常是一个坏主意。 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>
说明
- 用户点击链接至您的 ProjectServlet
- 您的 servlet 获取项目列表(来自任何数据源,最有可能是数据库)
- 然后您的 servlet 保存请求范围内的项目列表
- 转发到jsp View
- 您的 jsp View 将使用 EL 从请求范围获取项目列表
- for循环中的每个项目标题都是一个指向单个ProjectServlet的链接
在 singleProjectServet 中,您将获取 pid 查询参数并执行您想要的任何操作,例如检索项目详细信息或将其保存在 session 中。
以下是如何在 Servlet 的 session 中保存对象:request.getSession().setAttribute("project", projectObject);
- 通过查询参数中传递的pid获取projectObject
从这里开始
很难将初学者可能需要的所有内容都放在这个小答案区域中。希望我的回答能引导您走向正确的方向。
在您做任何其他事情之前,强烈推荐这本书:
Murach's Java Servlets and JSP, 3rd Edition (Murach: Training & Reference)
网上还有很多简单的教程可以帮助您入门,只需搜索关键字“jsp servlet mvc”即可。
祝您编码愉快,希望对您有所帮助。
关于java - 如何在jsp的forEach循环中添加 session 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37209015/