Параметр 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"));
и посмотрите выходные данные. любые пробелы, алфавит или специальные символы.
В этом случае я считаю, что вы можете передавать символы или пробелы.