如何 link 在 JSP 页面的 forEach 循环中将不同的 URL 指向不同的项目?
How to link different URLs to different items in forEach loop in JSP page?
我有一个 facultylist.jsp
页面,它在 forEach 循环中显示 List<Faculty>
作为请求属性参数,我希望此循环中的每个项目都是 link 指定的教员 facultyview.jsp
。我怎样才能做到这一点?
facultylist.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Faculties</title>
</head>
<body>
<h1>Faculties list</h1>
<ul>
<c:forEach var="faculty" items="${faculties}">
<li><a href="???">${faculty.name}</a></li>
</c:forEach>
</ul>
</body>
</html>
facultyview.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Faculty</title>
</head>
<body>
<h1>${faculty.name}</h1>
<ul>
<li>Faculty name: <c:out value="${requestScope.name}"></c:out></li>
<li>Total seats: <c:out value="${requestScope.total_seats}"></c:out></li>
<li>Budget seats: <c:out value="${requestScope.budget_seats}"></c:out></li>
</ul>
<a href="faculty?apply">apply for this faculty </a>
</body>
</html>
我不知道它是否有帮助,但我正在使用以下技术:tomcat、jsp、servlet 和 log4j.In 我的项目 我有一个 FrontController,它是一个与命令模式交互的 servlet - 每个命令 returns 一个资源路径和操作类型:转发或重定向。
如果您在 Faculty 实体中有一个简单的字段:
<a href="${faculty.url}">${faculty.name}</a>
@Mark: faculty represents an entity from database, i'm not sure if I want to change it adding another field, or you mean some other way ?
添加字段并不意味着您必须更改数据库,您可以拥有一个继承自 Faculty
的 Helper 实体并拥有更多您可能需要的字段,
public class FacultyFormHelper extends Faculty implements Serializable {
private String URL;
在您看来:
<a href="${facultyHelper.url}">${facultyHelper.name}</a>
但是,如果您不想修改数据库,可以创建一个助手 class,您可以将 onclick
事件添加到 <a>
<a onclick="goToURL(${faculty.id})">
然后检索数据...我不确定您是如何获取 URL... 从查看、ajax 电话或任何有此 URL...
的地方
换句话说,就是从下拉列表中选择一个名称并将其转发给前端控制器 servlet,使用 if else 条件并取决于您可以将请求转发给相应的值 jsp 或小服务程序
<select name="value"> in jsp
String value=req.getParameter("value"); in servlet
if()
else if()
您可以通过向 link 添加查询参数来解决您的问题,根据评论进行编辑。请注意,您无法直接访问位于 WEB-INF 文件夹下的 JSP 页面。另外,为了正确编码参数,最好构造 url like
<c:url value="facultyview.jsp" var="url">
<c:param name="name" value="${faculty.name}"/>
<c:param name="total_seats" value="${faculty.total_seats}"/>
<c:param name="budget_seats" value="${faculty.budget_seats}"/>
</c:url>
<li><a href="${url}">${faculty.name}</a></li>
并且比在你的 facultyview.jsp 中读取的查询参数
<li>Faculty name: ${param.name}</li>
<li>Total seats: ${param.total_seats}</li>
<li>Budget seats:${param.budget_seats}</li>
这种直接的 JSP 交流应该可以解决您眼前的问题,但真正正确的方法是传递 faculty[=] 的 id 23=] 到 servlet,获取 faculty 实例,放置在模型中并传递给视图。
我有一个 facultylist.jsp
页面,它在 forEach 循环中显示 List<Faculty>
作为请求属性参数,我希望此循环中的每个项目都是 link 指定的教员 facultyview.jsp
。我怎样才能做到这一点?
facultylist.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Faculties</title>
</head>
<body>
<h1>Faculties list</h1>
<ul>
<c:forEach var="faculty" items="${faculties}">
<li><a href="???">${faculty.name}</a></li>
</c:forEach>
</ul>
</body>
</html>
facultyview.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Faculty</title>
</head>
<body>
<h1>${faculty.name}</h1>
<ul>
<li>Faculty name: <c:out value="${requestScope.name}"></c:out></li>
<li>Total seats: <c:out value="${requestScope.total_seats}"></c:out></li>
<li>Budget seats: <c:out value="${requestScope.budget_seats}"></c:out></li>
</ul>
<a href="faculty?apply">apply for this faculty </a>
</body>
</html>
我不知道它是否有帮助,但我正在使用以下技术:tomcat、jsp、servlet 和 log4j.In 我的项目 我有一个 FrontController,它是一个与命令模式交互的 servlet - 每个命令 returns 一个资源路径和操作类型:转发或重定向。
如果您在 Faculty 实体中有一个简单的字段:
<a href="${faculty.url}">${faculty.name}</a>
@Mark: faculty represents an entity from database, i'm not sure if I want to change it adding another field, or you mean some other way ?
添加字段并不意味着您必须更改数据库,您可以拥有一个继承自 Faculty
的 Helper 实体并拥有更多您可能需要的字段,
public class FacultyFormHelper extends Faculty implements Serializable {
private String URL;
在您看来:
<a href="${facultyHelper.url}">${facultyHelper.name}</a>
但是,如果您不想修改数据库,可以创建一个助手 class,您可以将 onclick
事件添加到 <a>
<a onclick="goToURL(${faculty.id})">
然后检索数据...我不确定您是如何获取 URL... 从查看、ajax 电话或任何有此 URL...
的地方换句话说,就是从下拉列表中选择一个名称并将其转发给前端控制器 servlet,使用 if else 条件并取决于您可以将请求转发给相应的值 jsp 或小服务程序
<select name="value"> in jsp
String value=req.getParameter("value"); in servlet
if()
else if()
您可以通过向 link 添加查询参数来解决您的问题,根据评论进行编辑。请注意,您无法直接访问位于 WEB-INF 文件夹下的 JSP 页面。另外,为了正确编码参数,最好构造 url like
<c:url value="facultyview.jsp" var="url">
<c:param name="name" value="${faculty.name}"/>
<c:param name="total_seats" value="${faculty.total_seats}"/>
<c:param name="budget_seats" value="${faculty.budget_seats}"/>
</c:url>
<li><a href="${url}">${faculty.name}</a></li>
并且比在你的 facultyview.jsp 中读取的查询参数
<li>Faculty name: ${param.name}</li>
<li>Total seats: ${param.total_seats}</li>
<li>Budget seats:${param.budget_seats}</li>
这种直接的 JSP 交流应该可以解决您眼前的问题,但真正正确的方法是传递 faculty[=] 的 id 23=] 到 servlet,获取 faculty 实例,放置在模型中并传递给视图。