【问题标题】:JSP java.lang.NullPointerExceptionJSP java.lang.NullPointerException
【发布时间】:2013-10-15 15:16:00
【问题描述】:
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

java.lang.NullPointerException
java.util.Arrays.mergeSort(Arrays.java:1156)
java.util.Arrays.sort(Arrays.java:1080)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

我正在尝试对字符串数组进行排序并接收 java.lang.NullPointerException。这只是代码的一部分,但它是与错误相关的相关部分。我知道当我初始化字符串数组 myRows 时,它会将值设置为 null。但是,我正在检查空值并将 item_value、period_value 和 periodAmt_value 的值设置为设定值。当我打印出数组的内容时,它确实包含设置值。不明白为什么 java.util.Arrays.sort() 不起作用以及为什么会出错。非常感谢任何帮助!

String item_name;
String item_value;

String period_name;
String period_value;

String periodAmt_name;
String periodAmt_value;

String annualAmt_name;
int error_count = 0;
int annualAmt_value = 0;
int totalExp = 0;

String[] myRows = new String[3];


for (int i=0; i < 3; i++)
{
item_name = "item" + i;
item_value = request.getParameter(item_name);

if (item_value == null) 
{
        item_value = "Rent";
}

period_name = "period" + i;
period_value = request.getParameter(period_name);

if (period_value == null) 
{
    period_value = "52";  //default value
}

periodAmt_name = "periodAmt" + i;
periodAmt_value = request.getParameter(periodAmt_name);

if (periodAmt_value == null) 
{
    periodAmt_value = "520";
}


myRows[i] = item_value + "|" + period_value + "|" + periodAmt_value;

out.println(myRows[i]);


java.util.Arrays.sort(myRows);


String text = myRows[i];
StringTokenizer st = new StringTokenizer(text, "|");
String[] myFields = new String[st.countTokens()];

out.println("<tr>");

for (int j = 0; j < myFields.length; j++)
{ 
    myFields[j] = st.nextToken();


    if(j==0)
    {
    out.println("<td><input type=text name=" + item_name + " value=" + myFields[j] + "></td>\n");
    }

【问题讨论】:

  • 你能粘贴准确的错误信息(行号...)吗?
  • 看起来你每次都在循环中调用 sort,所以第一次 2 个元素将为 null,因此出现 NullPointerException。
  • 关注java.util.Arrays.sort(myRows); 的行号是多少?
  • 感谢您的快速回复

标签: java jsp


【解决方案1】:

查看您的异常日志后,我可以高度肯定地说您的问题是由于尝试对包含空元素的数组进行排序。鉴于您的代码流程,我强烈支持我之前的建议,即完整构建您的数组,然后对其进行排序,然后使用它来生成您的 html。

【讨论】:

  • 感谢您的快速回复。当您说完整地构建阵列时,您的确切含义是什么?我对 java 很陌生。
  • 您需要用一个值完全初始化数组中的每个元素。然后对数组进行排序。然后循环排序数组并生成您的 HTML。目前,您正试图在同一个 for 循环中初始化值、对数组进行排序并生成 html,这就是导致您的问题的原因。
  • 谢谢 Deadron...感谢您的意见!
猜你喜欢
  • 2015-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-06
  • 2023-04-10
  • 2014-02-09
相关资源
最近更新 更多