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
    }
}

あなたが直面している問題は、Javaが有効な整数を表していないために変換にNumberFormatException失敗したためにスローされることです。クライアントからのリクエストを制御できないため、try-catch ステートメントを (上記のメソッドの例と同様に) 使用して、その例外をフィルター処理する必要があります。StringInteger

補足:

request.getParameter("sittingPlaces")また、式が次の文字列ではなく有効な文字列を返すかどうかも確認する必要がありnullます。

if (sittingPlaces != null {
    // Continue your code here
} else {
    // The client request did not provide the parameter "sittingPlaces"
}
于 2015-02-05T03:55:37.423 に答える