2017-03-05 122 views
1

在我的servlet,我有:我在jsp中使用request.getAttribute後如何打印?

List list = new ArrayList(); 
.... 
request.getSession().setAttribute("list",list); 
     RequestDispatcher dispatcher=request.getRequestDispatcher("result.jsp"); 
     dispatcher.forward(request,response); 

而且在我result.jsp中的文件,我想打印出網站的檢查,所以我嘗試:

String[] str = (String[])request.getAttribute("list"); 

但有一個錯誤說

org.apache.jasper.JasperException: java.lang.ClassCastException: java.util.ArrayList cannot be cast to [Ljava.lang.String; 

那麼我應該怎麼做打印清單?

謝謝。

+0

'java.util.ArrayList中不能轉換到[Ljava.lang.String;' - 錯誤很明顯。你不能投射到'String []',你需要投射到'ArrayList '。 – BackSlash

+0

首先,您甚至不應該在JSP中擁有Java代碼。使用JSP EL和JSTL。並且不要使用原始類型.Java 5在2005年引入了泛型。我們在2017年。沒有任何藉口。 –

+0

@JBNizet所以如何使用jsp el來做到這一點?我在這裏真的很新。 –

回答

1

其實listArrayList類型不是Array的,所以嘗試這個:

<% 

ArrayList<String> list = (ArrayList<String>) request.getSession().getAttribute("list") ; 

//do something ... 

%> 

並確保你讓你的jsp訪問到Session使用:<%@ page session="true" %>


然而因爲@JBNizet表示,比jsp頁面中的Java代碼使用jstl表達式更爲可取:

  1. 在servlet:
List<String> list = new ArrayList<>(); 

request.setAttribute("list" , list); 

RequestDispatcher dispatcher=request.getRequestDispatcher("result.jsp"); 
dispatcher.forward(request,response); 
  • 在JSP:
  • <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> 
    
    <c:forEach items="${list}" var="element"> 
    
        //use the element here... 
        ${element} 
    
    </c:forEach> 
    
    +0

    知道了!!!非常感謝你!!!!!! –