java.lang.NumberFormatException: servlet 中的 null 错误

java.lang.NumberFormatException: null Error in servlet

Index.jsp:

<form action="stu_app_serv" method="post">
                    <table class="table">                    
                        <%
                            try {
                                String sql = "SELECT * FROM students WHERE approved = ?";
                                Connection conn = DBConnect.connect();
                                PreparedStatement pstmt = conn.prepareStatement(sql);
                                pstmt.setInt(1, 0);
                                ResultSet rs = pstmt.executeQuery();

                                while (rs.next()) {
                        %>                    
                        <tbody>
                            <tr>
                                <td><input disabled name="id" value="<%=rs.getInt("st_id")%>"></td>
                                <td><%=rs.getString("name")%></td>
                                <td><%=rs.getString("university")%></td>
                                <td><%=rs.getString("index_no")%></td>
                                <td><%=rs.getString("email")%></td>
                                <td>

                                    <button class="btn btn-success" type="submit" name="approve">Approve </button>
                                    <button class="btn btn-danger" type="submit" name="decline">Decline</button>

                                </td>
                            </tr>   
                        </tbody>                  
                        <%}
                                rs.close();
                                pstmt.close();
                                conn.close();
                            } catch (SQLException e) {
                                System.out.println("Error " + e.getMessage());
                            }
                        %>
                    </table>
                </form>

Servlet 文件是 stu_app_serv.java:

String id = request.getParameter("id");
int x = Integer.parseInt(id);

st_id 是学号。显示以下运行时错误:

java.lang.NumberFormatException: null

在 servlet 行

int x = Integer.parseInt(id);

如何修复此错误?

先检查id是否不为null,必须是合法的数字。您可以使用 Regex 来检查或捕获该异常..

您应该处理 Null 值并将其放入 try catch 块中。一件事不要在表示层执行业务逻辑。因为你在这里写代码 jsp 而不是在你的服务 class 或 servlet.

String id = request.getParameter("id");

    int x = 0;
    if(id!=null){
      try{
        x = Integer.parseInt(id);
       }catch(Exception e){
       }

    }

创建这个简单程序时:

  public static void main(String[] args)
  {  
    String id  = null;  
    int x = Integer.parseInt(id);
   }

你可以看到你会得到一个NPE。

因此可以假定您发送的 id 为空。