6

JSP ページに渡されるサーブレット変数 myVar を渡し、それを JavaScript に渡したいと考えています。JavaScript は、JSP ページに含まれる外部 JavaScript です。

JavaScript 関数を呼び出すボタンがありますが、サーブレットを介して JSP ページに渡される変数を渡すことができません。ボタンはフォームの一部ではありません。

JavaScriptの関数で呼び出してみました:

var x = '<%=myVar%>';

var x = '${myVar}';

var x = '<%= (String)request.getParameter("myVar") %>';

ただし、x常に入力した文字列です。

私は AJAX や JQuery を使用していません。何か案は?

コード例は簡略化されたバージョンです: (したがって、ボタンは実際には値を変更するときに js を呼び出すドロップダウンですが、ドロップダウンの一部ではない他の変数を changeCLass で呼び出す必要があります)

サーブレット側:

request.setAttribute("otherVars","tests");

JSP:

<script type="text/javascript" src="external.js"></script>

<select name="vars" id="myVars" onchange="changeClass(this)">
<option value='1' selected="selected">1</option>
</select>

JSPに含まれるexternal.js:

function changeClass(newVarX) {

    var newVarId =newVarX.value;
    var tID = '${otherVars}';

    alert(newVarId + " " + tID);
}

出力: 1 $(otherVars}

しかし、出力は次のようになります: 1 つのテスト

4

1 に答える 1

3

JavaScript ファイルがサーバーによって処理されないため、これは機能しません。考えられる解決策は次のとおりです。

  • tIDJSP ファイルで変数をグローバルに宣言します。

    JSP:

    <script type="text/javascript" src="external.js"></script>
    <script type="text/javascript">
        var tID = '${otherVars}';
    </script>
    
    <select name="vars" id="myVars" onchange="changeClass(this)">
        <option value='1' selected="selected">1</option>
    </select>
    

    JavaScript (external.js):

    function changeClass(newVarX) {
        var newVarId = newVarX.value;
        alert(newVarId + " " + tID);
    }
    
  • JavaScript ファイルも処理します。JavaScript に JSP ファイルを使用して、正しいコンテンツ タイプを適用できます。

    JSP:

    <script type="text/javascript" src="external.jsp"></script>
    
    <select name="vars" id="myVars" onchange="changeClass(this)">
        <option value='1' selected="selected">1</option>
    </select>
    

    JavaScript (external.jsp --> これも JSP ファイルですが、コンテンツ タイプは text/javascript に設定されていることに注意してください):

    <%@ page language="java" contentType="text/javascript; charset=UTF-8" pageEncoding="UTF-8"%>
    function changeClass(newVarX) {
        var newVarId = newVarX.value;
        var tID = '${otherVars}';
        alert(newVarId + " " + tID);
    }
    
于 2012-11-04T21:35:34.890 に答える