2015-04-14 93 views
0

我想從servlet傳遞值到JSP文件。我已經確認數據是從JSP到Servlet的,但不是相反。這裏是Java片段JSP從Java servlet獲取空值

//Here is where I get a List<String> of the column names 
List<String> columns = DataAccess.getColumns(query); 

//Turn the List<String> into a 1D array of Strings 
for(int i = 0 ; i < numArrays ; i++) 
    request.setAttribute("rows["+i+"]", rows[i]); 

//Set the attribute to the key "columns" 
request.setAttribute("columns", arColumns); 

//Launch result.jsp 
request.getRequestDispatcher("result.jsp").forward(request, response); 

在那裏我期待有一串字符串鏈接到鍵「列」。當我從JSP文件中得到它時,我得到了null。這是我如何找回它,並確認它爲空:

<% String[] columns = (String[])request.getParameterValues("columns"); 
    if(columns == null){ 
     System.out.print("columns is null\n"); 
    } 
    int colNum = columns.length; //How many columns we have 
%> 

在Eclipse,當我運行代碼,我得到的字符串「欄爲空」 ONT他安慰,其次是一個NullPointerException當我試圖讓列的長度。

我確認arColumns在java文件中不爲null,當我嘗試將它們打印到控制檯時,它會打印列標題。

我在這裏做錯了什麼?

謝謝你的幫助。

+1

使用「request.getAttribute」而不是 – BretC

回答

0

我相信你應該代之以:

String[] columns = (String[]) request.getAttribute("columns"); 
+0

這只是使用錯誤方法的一種情況,您是對的。 –

1
String[] columns = (String[]) request.getAttribute("columns"); 

getParameterValues()當你使用HTML複選框通常使用。

<form action="someServlet" method="POST"> 
<input type="checkbox" name="delete" value="1"> 
<input type="checkbox" name="delete" value="2"> 
<input type="checkbox" name="delete" value="3"> 
</form> 

//in someServlet: 
String[] itemsToBeDeleted = request.getParameterValues("delete"); 

for(String s : itemsToBeDeleted) { 
    System.out.println(s); //prints 1,2,3 if they're checked 
}