JSP从Java servlet获取空值

时间:2015-04-14 15:56:10

标签: java jsp servlets tomcat8 java-server

我正在尝试将值从servlet传递到JSP文件。我已经确认数据是从JSP到Servlet,但不是相反。这是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);

我希望将一维字符串数组链接到键#34;列&#34;。当我从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中,当我运行代码时,我得到字符串&#34; columns为null&#34;在我的控制台上,当我试图获得列的长度时,接着是NullPointerException。

我确认java文件中的arColumns不为null,当我尝试将它们打印到控制台时,它会打印列标题。

我在这里做错了什么?

感谢您的帮助。

2 个答案:

答案 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
 }

答案 1 :(得分:0)

我相信你应该尝试:

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