2

Javaクラスによって返されるJavaScript配列/多次元が必要です。

<script type="text/javascript">
     var strComboValue  = <%=DBComboOptions.getOptions(combos)%>;
</script>

ここにstrComboValue、JavaScript変数とDBComboOptions.getOptions(combos)Javaクラスのreturns配列があります。今、私はJavaScriptでその配列が欲しいです。

4

2 に答える 2

2

Java/JSPに構文的に有効なJS配列構文を出力させるだけです。Java/JSPとJavaScriptは同期して実行されないことに注意してください。Java / JSPはHTMLを1つの大きなものとして生成しString、JSはその一部にすぎません。JSは、Java / JSPからすべてのHTML出力を取得すると、最終的にWebブラウザで実行されます。

最終的に次の有効なJS配列構文が必要であると想定します。

<script type="text/javascript">
    var strComboValue = [ "one", "two", "three" ];
</script>

次に、Java / JSPコードを適宜記述して、その構文が正確に出力されるようにする必要があります。

<script type="text/javascript">
    var strComboValue = [ 
<% 
    String[] options = DBComboOptions.getOptions(combos);
    for (int i = 0; i < options.length; i++) {
%>
        "<%= options[i] %>"
<%
        if (i + 1 < options.length) {
%>
            ,
<%
        }
    }
%>
    ];
</script>

それはひどく読めないだけです(そしてtaglibsの代わりに昔ながらの スクリプトレットを使用しているためだけではありません)。ただし、より簡単なのは、 Google GsonのようなJSON(JavaScript Object Notation)ライブラリを取得getOptionsAsJson()して、次のようなことを行う追加のメソッドを作成することです。

public getOptionsAsJson(Object value) {
    return new Gson().toJson(getOptions(value));
}

そして最後に代わりにそれを使用してください:

<script type="text/javascript">
    var strComboValue = <%=DBComboOptions.getOptionsAsJson(combos)%>;
</script>
于 2012-05-28T13:29:32.490 に答える
0

json libを使用できます。http ://json.orgには多くのjsonライブラリがあります。

int[] arr = new int [] {1,2,3}; // java

に変換:

var arr = [1,2,3];  // javascript
于 2012-05-28T07:43:31.087 に答える