2017-03-05 118 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

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