我只是感到困惑,当我在 indexq.jsp 中使用<jsp:include file="include/data.jsp" />
时,我的数据没有显示,但是当我使用<%@ include file="include/data.jsp" %>
时,它按预期工作。我不确定它是否是范围或表达式语言问题。我还包括以下代码:
TaxiController.java
public class TaxiController extends HttpServlet {
// codes...
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// codes...
req.setAttribute("taxi_list", taxiDao.getAll());
req.getRequestDispatcher("/indexq.jsp").forward(req, resp);
}
}
indexq.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script src="js/jquery-1.10.1.min.js" ></script>
<title>Taxi List</title>
</head>
<body>
<%@ include file="include/form.jsp" %>
<br />
<jsp:include page="include/data.jsp" />
<%-- <%@ include file="include/data.jsp" %> --%>
</body>
</html>
包含/ data.jsp
<table>
<thead>
<tr><th colspan="5">Data</th></tr>
<tr>
<th>Date</th>
<th>Taxi Name</th>
<th>Plate number</th>
<th>Amount</th>
</tr>
</thead>
<tbody>
<c:forEach var="taxi" items="${taxi_list }" >
<tr>
<td>${taxi.date } </td>
<td>${taxi.taxiName }</td>
<td>${taxi.plateNum }</td>
<td>${taxi.amount }</td>
</tr>
</c:forEach>
</tbody>
</table>
谢谢!
答案 0 :(得分:1)
基本上<%@ include file="include/form.jsp" %>
使用相同的上下文/请求,<jsp:include file="include/data.jsp" />
使用separete请求。
因此,在您的情况下,它不起作用,因为您将值设置为请求的属性
以下是从链接中提取的一些详细信息:http://www.objectpartners.com/2011/04/14/jsp-to-include-or-jspinclude/
<jsp:include page=”"/>
标记的结果与行为不同 将指定页面呈现的内容注入到包含的JSP中 标签的重点。这是通过基本上提交 请求页面到同一个容器,作为单独的呈现请求, 并取结果,而不是文件的内容。这个要求是 在它自己的上下文中完成,这意味着它不使用相同的页面 信息作为包含标记的页面。这个可以 方便,特别是如果包含的内容可能有冲突 变量
<%@include file=”" %>
标记将注入已命名的内容 将文件放入包含标记的JSP中,就像复制并粘贴它一样。 这是在解析包含文件的内容之前完成的, 而是在解析包含JSP时解析它。这是最多的 类似于C #include指令,在预处理过程中 包含文件在编译文件之前“粘贴”到位。 在包含内容之后,对其进行评估,所有内容都相同 上下文,因此具有相同的访问和约束 如果内容只是简单输入就包含在内的代码。