2013-06-30 56 views
2

我只是疑惑,當我使用<jsp:include file="include/data.jsp" />indexq.jsp我的數據並沒有顯示出來,但是當我使用它<%@ include file="include/data.jsp" %>按預期工作。我不確定它是一個範圍還是表達式語言問題。我還包括下面的代碼:JSP/Servlet的範圍問題:包括標籤

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> 

謝謝!

回答

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指令的大多數 ,其中在預處理期間,包含文件的 在編譯文件之前被「粘貼」到位。 包含內容後,將對其進行評估,所有內容均位於同一個 上下文中,因此,如果內容是簡單鍵入的,則包含的代碼將具有相同的訪問和約束。

+0

Thanks fmodos!現在對我來說很清楚,我只是在我的代碼中使用指令include。謝謝! – jzarsuelo

+0

@ cRane01歡迎您,很高興提供幫助 – fmodos