0

「jsp ファイル内の 17: /index.jsp Void メソッドは値を返すことができません」というエラーが表示されます。私の例外コードが間違っていると思います。ユーザーが数字を入力していないときに空の文字列を返す方法がわかりません。助言がありますか

<%@ page import="java.io.*"%><%@
page import="java.util.*"%><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<%
    String sum = (String) session.getAttribute("sum");

            sum = "5";
            session.setAttribute("sum",sum);

    int isum = Integer.parseInt(sum);
    try {
    isum=Integer.parseInt(request.getParameter("number"));
    } catch (NumberFormatException nfe) {return "";}      
    if(request.getParameter("number")!=null && Integer.parseInt(request.getParameter("number"))==isum)
    {
     if(request.getParameter("submit") != null){
            out.print("Hello");}
    }
  %>

  <body>
    <title>MAIN</title>
    <form action="index.jsp" method="post">
    Enter 5 = <input type="text" name="number">
    <input type="submit" value="continue" name="submit">
    </form>


 </body>
 </html>
4

2 に答える 2

1

JSP に書き込むすべてのコードは、_jspServiceメソッドにコンパイルされます。以下に示すように、署名にはvoid戻り値の型があります。

public void _jspService(HttpServletRequest request, 
   HttpServletResponse  response) 
     throws IOException, ServletException {

}

return以下の行のステートメントを削除する必要があります。

} catch (NumberFormatException nfe) {return "";} 

Web ページを扱っているのでreturn、値を ing する代わりに、ユーザーに適切なメッセージを表示する必要があります。あなたの場合、それはエラーメッセージになります。

} catch (NumberFormatException nfe) {
    out.println("Error!");
}

最も重要なこと

2012 年に作成した JSP コードでは、スクリプトレットを使用しないでください。JSTL などのより高度な手法について学び、サーブレットの使用も検討してください。

于 2012-04-22T20:09:35.697 に答える
0

基本的なプログラミングの概念を誤解しています: void メソッドは値を返すことができません。この行を確認してください:

catch (NumberFormatException nfe) {
    return "";
}

あなたのエラーがあります。JSP は値を返すことができません。代わりに、ログに投稿するなどの例外を使用して何かを行う必要があります。とりあえず、コンソールに出力します。

catch (NumberFormatException nfe) {
    System.out.println("Error parsing the number: " + nfe.getMessage());
}
于 2012-04-22T20:09:28.907 に答える