java.lang.NumberFormatException: пустая ошибка в сервлете - PullRequest
0 голосов
/ 30 июня 2018

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>

Файл сервлета stu_app_serv.java:

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

st_id - идентификационный номер студента. Там показывает следующую ошибку времени выполнения:

java.lang.NumberFormatException: null

в строке сервлета

int x = Integer.parseInt (id);

Как мне исправить эту ошибку?

Ответы [ 3 ]

0 голосов
/ 30 июня 2018

Вы должны обработать нулевое значение и поместить в блок try catch. Одно дело не делать бизнес-логику на уровне представления. Поскольку вы здесь пишете код в jsp, лучше делайте это в своем классе обслуживания или сервлете.

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

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

    }
0 голосов
/ 30 июня 2018

При создании этой простой программы:

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

Вы видите, что получите NPE.

Таким образом, можно предположить, что отправляемое id равно нулю.

0 голосов
/ 30 июня 2018

Проверьте, не является ли id сначала нулевым, и должен ли он быть действительным числом. Вы можете использовать Regex, чтобы проверить это или поймать это исключение ..

...