2

我只是感到困惑,当我<jsp:include file="include/data.jsp" />indexq.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>

谢谢!

4

1 回答 1

1

基本上<%@ include file="include/form.jsp" %>使用相同的上下文/请求,并且<jsp:include file="include/data.jsp" />它使用单独的请求。

因此,在您的情况下,它不起作用,因为您将值设置为请求的属性

以下是从链接中提取的一些详细信息:http ://www.objectpartners.com/2011/04/14/jsp-to-include-or-jspinclude/

<jsp:include page=”"/>标记的不同之处在于,呈现指定页面的结果被注入到包含标记点的 JSP 中。这是通过实质上将请求的页面作为单独的呈现请求提交到同一个容器并获取结果而不是文件的内容来完成的。这个请求是在它自己的上下文中完成的,这意味着它不使用与包含标签的页面相同的页面信息。这很方便,特别是如果包含的内容可能有冲突的变量

<%@include file=”" %>标记会将命名文件的内容注入到包含该标记的 JSP 中,就好像它被复制和粘贴一样。这是在解析包含文件的内容之前完成的,而不是在解析包含 JSP 的同时解析它。这最类似于 C #include 指令,在预处理期间,包含的文件在文件编译之前被“粘贴”到位。包含内容后,将在相同的上下文中对其进行评估,因此如果内容只是在适当的位置键入,则包含的代码将具有相同的访问和约束。

于 2013-06-30T06:15:06.560 回答