0

リクエストオブジェクトに属性が存在するかどうかを確認することはできますか? クライアント側にエラー メッセージを配信する必要がある特定のエラー ケースがあります。

サーブレット コード:

request.setAttribute("error", "The following term was not found in the index: " + terms);
RequestDispatcher dispatcher = request.getRequestDispatcher("graph.jsp");
dispatcher.forward(request, response);

このように試してみましたが、アラートウィンドウがまったく表示されません...

JSP コード:

<script>
   var test = "${error}";
   if(test != null)
       alert(test);
</script>
4

2 に答える 2

0

あなたの場合、空ではなく null をチェックする必要があります。 if(test != "")

于 2013-02-16T12:07:28.970 に答える
0

私がこれを正しく読んでいれば、この JavaScript を出力する JSP アプリを持っていることになります。つまり、JSP ページは変数 error を文字列値に設定します。次にこれを使用して、エラー変数の内容を警告する JavaScript を生成します。

あなたの JS コードは一般的に正しいです。いくつかのことが私に際立っています:

1) script タグに言語属性を追加します (以下を参照)。

<script language="javascript">
    var test = "${error}";
    if(test != null)
        alert(test);
</script>

2) ブラウザのエラーを確認します

ここにあるコードをテストしましたが、エラー値が「hello world」に似ている場合に機能します。テスト変数はこれに設定されます。文字列は null と等しくありません (ただし、空の文字列も null と等しくないため、if ステートメントは少し役に立ちません)。これにより、おそらく ${error} から出力している文字列に二重引用符が含まれている可能性があると思います。

エラーが次のとおりだとしましょう: 次の用語がインデックスに見つかりませんでした: "avocado"。

生成された JS は次のようになります。

<script language="javascript">
    var test = "The following term was not found in the index: "avocado"";
    if(test != null)
        alert(test);
</script>

二重引用符で囲まれた文字列の二重引用符に注意してください。これは構文エラーです。

Chrome を使用している場合は、開発者ツールを開きます ([表示] > [開発者] > [コンソール])。ページをリロードします。報告されたエラー メッセージが表示されますか? はいの場合、エラーは何ですか? いいえの場合は、ソースを表示して生成された JS を確認し、精査のためにここに投稿してください。

于 2013-02-15T21:39:22.297 に答える