2014-04-10 78 views
0

我在從Servlet發送的JSP頁面打印(顯示)數組數據時出現問題。這裏是代碼和JSP頁面。請幫助我追蹤我正在犯的錯誤。在JSP中使用JSTL標籤來從servlet打印數組值

MY servlet代碼:

//inside doGET method 
String title="Reading cookies example"; 
String[] info={"What the hell!!","Nothing"}; 

request.setAttribute("title", title); 
request.setAttribute("name", info); 

RequestDispatcher rd=request.getRequestDispatcher("myjsp.jsp"); 
rd.forward(request, response); 

MY JSP代碼:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<%-- 
    Document : myjsp 
    Created on : Apr 5, 2014, 1:19:35 PM 
    Author  : sabin 
--%> 

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body> 
     <c:forEach var="pagetitle" items="title"> 
      <h1>${title}</h1> 
     </c:forEach> 
     <c:forEach var="data" items="{name}" > 
      <C:OUT value="${data}"> </C:OUT> 
      <h1>${name}</h1> 

     </c:forEach> 


    </body> 
</html> 

OUTPUT PAGE:

讀餅乾例如 [Ljava.lang.String; @ 195019d

而不是打印「什麼是地獄」,沒有它的印刷[Ljava.lang.Strin克; @ 195019d。什麼原因和我失蹤?如果有人能夠幫助我解決這個問題,我將非常感激。提前感謝您。

回答

1

試試這個,

${title} 
    <c:forEach var="temp" items="${name}"> 
     <c:out value="${temp}"></c:out> 
    </c:forEach> 

因爲title不是數組它只是一個字符串,也看過這個理解for-each tag 功能將打印這樣的輸出,

讀取Cookie例如什麼是地獄!沒有

0

請更正foreach循環如下

<c:forEach var="data" items="${requestScope.name}" > 

您的代碼應該是這樣的

<c:forEach var="data" items="${requestScope.name}" > 
      <c:out value="${data}"> </c:out> 
      <h1>${name}</h1> 
</c:forEach> 


1) <c:out value="${name}" /> 
2) <c:out value="${requestScope.name}" /> 

requestScope當你absoluetely想你的對象來自請求,而不是從頁,會話或應用程序範圍,而使用$ {name}將在頁面中搜索名稱屬性,然後在請求中,然後在會話中,然後在應用程序中搜索。

假設JSP中的一些其他代碼在頁面範圍內設置了一個名稱屬性。但是你想訪問請求中的名稱:你不得不使用requestScope。

假設會話可能具有名稱屬性。如果JSP忘記在請求範圍中設置name屬性,則不使用requestScope.name將返回會話範圍名稱。

如果JSP片段的目標是訪問封閉JSP中設置的內容,也許這個JSP片段應該是JSP標記,並且您應該將名稱作爲參數傳遞給此標記。