2017-10-06 10 views
1

良い日、すべて。Java JSP - if() - else()を使用したスクリプトレットの使用

私は次のセットアップを持っている:

    ユーザーが テキストフィールドに金額を入力した後、いずれかのボタンがクリックされたときに、ブラウザにHTMLフォームを出力
  • A JSP、
  • データ特定の計算を実行し、結果データをJSPに返すサーブレットに送信されます。
  • JSPは結果データを表示し、実行し続けるので、ユーザーはプログラムを使用してより多くの反復を行うことができます。

実行時に、まず2つのセッション属性「balance」 と「formattedBal」が存在するかどうかをチェックするようにJSPをコーディングしようとしています。これらの属性が存在しない場合(つまり、 ユーザーがURLアドレスをヒットした後初めてJSPを実行する場合)、JSPの実行でこれらのセッション属性を作成して割り当てる必要があります。これらの属性が の場合(これはJSPの最初の起動ではなく、結果としてユーザに を戻して結果データを送信したことを意味するため)、JSPは適切なコード化された場所に前記セッション属性の値を示すHTML出力、 を単に実行する。 - <%タグ

<html> 
    <hr>  <!--Horizontal line.--> 
    <title>Online Bank ATM Simulator</title>  <!--Title to show on browser title bar.--> 
    <h1 align = "center">Bank ATM Simulation</h1> <!--Page heading, centered on page.--> 

    <SCRIPT LANGUAGE = JAVASCRIPT> 
    <!-- 

    function checkAttributes() 
    { 
    <% 
    // Set balance and formatted balance as session attributes. 
    if(request.getSession().getAttribute("balance") = null && request.getSession().getAttribute("formattedBal") = null) 
    { 
     request.getSession().setAttribute("balance", 0); 
     request.getSession().setAttribute("formattedBal", "$0"); 
    } 
    %> 
    } 
    --> 
    </SCRIPT> 

    <body onLoad = "checkAttributes()", "amount.focus()">    <!--Set focus to the text-field.--> 
     <form method = "POST" action = "../servlet/JSPBank"> <!--Form method and submission address.--> 
      <center>  <!--Tag to center the following output on page.--> 
      Amount: 
      <input type = "text" name = "amount" id = "amount" size = "20"><br><br> <!--Amount text field.--> 
      Balance: 
      <%=(String)request.getSession().getAttribute("formattedBal")%> + "<br><br> <!--Current formatted balance shown.--> 
      <button name = "balButton" value = "Balance">Balance</button> <!--"Balance" button.--> 
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <!--Spacers.--> 
      <button name = "depButton" value = "Deposit">Deposit</button> <!--"Deposit" button.--> 
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <!--Spacers.--> 
      <button name = "withdrButton" value = "Withdraw">Withdraw</button> <!--"Withdraw" button.--> 
      </center>  <!--Tag to end centering of output on page.--> 
     </form>  <!--End of form.--> 
    </body> 
    <br> 
    <hr>  <!--Horizontal line.--> 
</html> 

問題は、私は11行目に示すエラーを取得しています、次のとおりです。

以下は、JSPのコードです。私は機能か、エラー 遺骨を使用して読み込むかどうかを次のとおりに:

HTTPステータス500 - タイプ例外レポートこの要求を満たすことを妨げる メッセージサーバが遭遇 説明内部エラー() 。 例外 org.apache.jasper.JasperExceptionが:JSPファイルで11:JSP に対してエラーをクラスをコンパイルすることができませんがラインで発生した 生成されたサーブレットのエラー/bank.jsp:!トークン上 構文エラー「=」、= org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328) org.apache.jasper.compiler.JDTCompilerを期待。 generateClass(JDTCompiler.java:397) org.apache.jasper.compiler.Compiler.compile(Compiler.java:288) org.apache.jasper.compiler.Compiler.compile(Compiler.java:267) org.apache .jasper.compiler.Compiler.compile(Compiler.java:255) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:296) org.apache.jasper.servlet.JspServlet.serviceJspFile(のJspServlet .javaファイル:私が研究されている295) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

これと関連するエラーは、あまり役に立たない。

私は=記号を使用しているとエラーが表示されますが、=コンビネーション、あなたが参照しているように、 という行が指し示されているのは、最初は=ではありません。

私はJavaを使い慣れていません。これはどこか簡単な間違いですが、それを特定するのに役立つでしょうか?

「標準」Javaコマンドを使用する必要があるときはいつでも、JSPでスクリプトレットを使用する必要があります。

また、これらのセッション属性の有無を確認するための記述されたコード化された方法とその条件付き 割り当てが正しくない場合は、これをよりうまく実行する方法をアドバイスしてください。

ありがとうございました!

答えて

0

JavaScriptの内部で使用する場合、小さな引用符でスクリプトレットをカプセル化しなければならないという問題があります(よくある問題です)。そうですね:

'<%=(String)request.getSession().getAttribute("formattedBal")%>' 
関連する問題