2015-04-14 7 views
0

Я пытаюсь передать значения из сервлета в файл JSP. Я уже подтвердил, что данные идут от JSP к Servlet, но не наоборот. Вот Java фрагментJSP получение нулевых значений из Java-сервлета

//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); 

Там я ожидал, чтобы иметь массив 1D цепочек, связанных с ключевыми «столбцов». Когда я получаю его из 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, когда я запускаю код я получаю строку «столбцы равна нулю» ОНТ он утешать, а затем NullPointerException, когда я пытался получить длина столбцов.

Я подтвердил, что arColumns не является нулевым в java-файле, он печатает заголовки столбцов при попытке распечатать их на консоли.

Что я здесь делаю неправильно?

Благодарим за помощь.

+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 
} 
Смежные вопросы