5

私はウェブ開発が初めてです。エラーの詳細をプロンプトに表示する機能を持つ外部 JavaScript ファイルがあります。エラーメッセージを関数に渡す必要があります。サーブレットでコントローラーを作成しました。

サーブレットからその JavaScript ファイルの関数を呼び出す方法。

4

3 に答える 3

5

サーブレットから Java スクリプト関数を呼び出すことはできません。むしろ、次を使用して JavaScript コードを印刷できます。

response.getOutputStream().println("[javascript code]");

ブラウザに入力すると、javascript 関数がブラウザで実行されます。

于 2012-04-21T11:18:39.843 に答える
2

サーブレットは Web ブラウザーではなく Web サーバーで実行されること、および JS は Web サーバーではなく Web ブラウザーで実行されることを理解する必要があります。通常の方法では、サーブレットが要求をJSPファイルに転送し、Web サーバーによって Web ブラウザーに送信される HTML/CSS/JS コードが生成されます。最終的に、HTML/CSS/JS コードはすべて Web ブラウザーで実行されます。

(やや奇妙な、tbh)機能要件を達成するには、転送された JSP に特定のスクリプト呼び出しを条件付きでレンダリングさせます。たとえば、JSON 配列形式でエラーを収集して設定したと仮定すると、次のようにJSTLが使用されます。 <c:if>${errors}

<c:if test="${not empty errors}">
    <script>displayErrors(errors);</script>
</c:if>

または、JSP に JS 変数として割り当てさせ、JS にさらに処理させます。何かのようなもの:

<script>
    var errors = ${errors};

    if (errors.length) {
        displayErrors(errors);
    }
</script>

奇妙な要件について言えば、JS を使用してメッセージを表示することを余儀なくされている場合、それは、alert()または何かを使用していることを意味するだけです。これは非常に 90 年代のものであり、ユーザー フレンドリーではありません。HTML が入力フィールドの横に配置されるか、フォームの上のリストに配置されるように、JSP に HTML を生成させるだけです。私たちのサーブレット wiki ページには、まさにそのように動作する hello world の例があります。

于 2012-04-21T12:52:25.477 に答える
2

次の方法を使用して、同様の種類の動作を実現できます。応答自体を送信するときに、JS イベントを提供できます。

PrintWriter out = response.getWriter();
out.println("<tr><td><input type='button' name='Button' value='Search' onclick=\"searchRecord('"+ argument + "');\"></td></tr>");

そのため、検索ボタンをクリックすると、JS の検索レコード メソッドが呼び出されます。

于 2012-04-21T11:30:26.403 に答える