2

我正在开始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"));

知道为什么吗?感谢负载。

4

2 回答 2

5

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 语句(就像上面的示例方法一样)来过滤该异常,因为您无法控制来自客户端的请求。

另外:

您还应该检查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"
}
于 2015-02-05T03:55:37.423 回答
2

检查您在 sitPlaces 请求参数中获得的值。只需尝试在控制台上使用

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

并查看输出。存在的任何尾随空格、字母或特殊字符。

在这种情况下,我相信您可能正在传递字符或尾随空格。

于 2015-02-05T04:02:08.377 回答