【问题标题】:Can't use a "for" loop in JSP不能在 JSP 中使用“for”循环
【发布时间】:2016-05-19 11:36:41
【问题描述】:

我遇到了一个错误,我无法将传入变量强制转换为 int。将其更改为Integer,然后瞧:它现在可以工作了。我尝试使用该变量创建一个for 循环(只是为了测试目的,你知道),它开始抛出数百个错误,其中一些是NullPointerException

检查代码:

<%

    Integer number = (Integer)request.getAttribute("num");
    System.out.println(number);

    for(int i=0;i<number;i++){  
    System.out.println(i);
    }

%>

一开始,我试图复制一些&lt;p&gt;,所以我可以看到它的工作原理(我将变量从同一个视图传递给控制器​​,然后将其检索回此处)。如果我评论for,正确的结果会出现在System.out.println中。

如果我在for 循环的条件运算符中放置一个静态值(如 5 左右),这也不起作用。

为什么我不能在我的view.jsp 中使用 for?这是有原因的吗?

【问题讨论】:

  • 我认为应该是out.println(i); 而不是System.out.println(i); 因为你想在你的jsp页面而不是控制台中打印。
  • “它开始抛出数百个错误”...您愿意描述一下这些错误吗?此外,NullpointerExceptions 有一个位置/堆栈跟踪,应该清楚地指向一个被取消引用的 null 值。

标签: java jsp


【解决方案1】:

您发布的代码中唯一可以获取null 对象的地方是在该行中

Integer number = (Integer)request.getAttribute("num");

如果您的请求没有设置此属性,您应该什么都不做,例如将其余代码包装在 if(number == null) { ... } 块中或显式初始化它,例如if(number == null) number = 0;

然而,在你的 JSP 中没有任何脚本块是最优雅的——而是使用 taglibs 和 EL——但这并不能回答你的确切问题,只是引导你找到更好的(可维护的)代码。

【讨论】:

    【解决方案2】:

    问题:

    这里的问题是你使用的是System.out.println()

    说明:

    如果你想在 JSP 页面中打印结果,你应该使用:

    out.println(i);
    

    因为如果你写System.out.println(i);,结果将被打印到控制台。

    【讨论】:

    • 正确 - System.out.println() 打印到控制台,但打印到其他输出流并不能修复 NullpointerException...
    • @OlafKock 我不是在谈论 NullPointerException,他说即使他在 for 循环中使用他的代码并使用静态数字,例如 5,它也不起作用。
    • 嗯。我读的越多,它的意义就越小。感觉就像许多不同的问题混为一谈。
    • 确实如此。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2014-11-20
    • 2020-08-07
    相关资源
    最近更新 更多