Параметр get запроса JSP вызывает исключение

Я начинаю JSP. У меня есть следующая форма HTML.

<form method='POST' enctype='multipart/form-data'>
    <input type="text" name="sittingPlaces">
    <textarea name="invitees"></textarea>
    <input type="submit" value="Submit">
</form>

И следующий код Java.

if (request != null && request.getContentType() != null) {
    int sittingPlaces = Integer.parseInt(request.getParameter("sittingPlaces"));
    String invites = request.getParameter("invitees");
}

Я получаю ошибку в

int sittingPlaces = Integer.parseInt(request.getParameter("sittingPlaces"));

Есть идеи почему? Спасибо огромное.

2 ответа

Решение

Проверьте, если строка request.getParameter("sittingPlaces") является допустимым числом с использованием следующего метода:

public boolean isInteger(String str) {
    try {
        Integer.parseInt(str);
    } catch (NumberFormatException e) {
        return false; // The string isn't a valid number
    }
    return true; // The string is a valid number
}

Или вы можете реализовать это внутри своего кода:

if (request != null && request.getContentType() != null) {
    String sittingPlacesStr = request.getParameter("sittingPlaces");
    try {
        int sittingPlaces = Integer.parseInt(sittingPlacesStr);
        String invites = request.getParameter("invitees");
    } catch (NumberFormatException | NullPointerException e) {
        // handle the error here
    }
}

Проблема, с которой вы сталкиваетесь, заключается в том, что NumberFormatException брошен, потому что Java не может конвертировать ваши String в Integer потому что он не представляет действительное целое число. Вы должны использовать оператор try-catch (как в примере выше), чтобы отфильтровать это исключение, так как вы не можете контролировать запрос, поступающий от клиента.

Additionaly:

Вы также должны проверить, если request.getParameter("sittingPlaces") выражение возвращает допустимую строку, а не null: String SittingPlaces = request.getParameter("SittingPlaces");

if (sittingPlaces != null {
    // Continue your code here
} else {
    // The client request did not provide the parameter "sittingPlaces"
}

Проверьте значение, которое вы получаете в параметре запроса SittingPlaces. Просто попробуйте напечатать это на консоли, используя

System.out.println(request.getParameter("sittingPlaces")); 

и посмотрите выходные данные. любые пробелы, алфавит или специальные символы.

В этом случае я считаю, что вы можете передавать символы или пробелы.

Другие вопросы по тегам