传递复选框值时出现空指针异常

时间:2015-08-03 04:57:17

标签: java jdbc checkbox

我创建了一个索引页面,您在其中取复选框的值并将其传递给名为AddToWork.java的文件,但它显示空指针异常。传递复选框的值有一些问题。请帮助。这是为索引页

剪切的代码
<td>
<center>
<form action="addtowork?id2=<%=mail.getTempToken()%>" method="post">
<input type="submit" value="Add to my work">
<input type="checkbox" name="flag" value="flag">High Priority</form>   
</center></td>

for AddToWork.java

protected void doPost(HttpServletRequest request, HttpServletResponse     response) throws ServletException, IOException {

    EmailDesc mail = new EmailDesc();

    String imp = new String();

    imp = (String) request.getParameter("flag");



    String thisid = request.getParameter("id2");
    Home home = new Home();

    User user = new User();

    user = (User) request.getSession().getAttribute("user");

    mail = home.getEmail(thisid, user);



    home.givePermanentToken(mail,thisid);

    if (imp.equals("flag")){
        System.out.println("Priority Changed to " + mail.getPriority() + "!");
    }



    response.sendRedirect("index1.jsp");



}

如果我删除addtowork.java中的if语句,则代码运行完美。

3 个答案:

答案 0 :(得分:2)

这是因为你的“imp”对象指向什么(null)&amp;这是一个例外。像这样使用“尤达符号”

if("flag".equals(imp)){
     // your code
}

这消除了获得空指针异常的可能性

答案 1 :(得分:1)

案例1:name.equals(&#34; Java&#34;)将未知值与已知值进行比较。

我们将name(unknown)值与另一个字符串Java(known)值进行比较。 name将根据一些数据库调用,调用另一个方法等来决定...有可能你得到名称的空值和java.lang.NullPointerException的可能机会,或者你必须明确检查名称的空值。

案例2:&#34; Java&#34; .equals(名称)将已知值与未知值进行比较。

我们将Java(known)值与另一个字符串name(unknown)值进行比较。同样的方式名称将根据一些数据库调用,调用另一个方法等来决定...但equalsequalsIgnoreCase方法的String将处理null值并且你不会...必须明确检查名称的空值。

在你的情况下

/* You are getting `null` for variable `imp` */
imp = (String) request.getParameter("flag");

更改

if (imp.equals("flag")){
    System.out.println("Priority Changed to " + mail.getPriority() + "!");
}

if ("flag".equals(imp)){
    System.out.println("Priority Changed to " + mail.getPriority() + "!");
}

答案 2 :(得分:0)

案例I:当您通过选中复选框提交表单时,它将起作用,因为该值已在请求参数flag中设置

案例II:当您提交表格而未检查&#34;优先级&#34;复选框然后请求参数设置为null,然后在条件时调用null方法上的equal方法。所以请使用

if("flag".equals(imp))

注意: - 使用新的

创建字符串是不好的做法
String imp = new String(); //bad don't use this
String imp = ""; //use in this way