オプションとしてJavaScriptオブジェクトを渡してほしいjQueryライブラリがあります。たとえば、これは機能します。
//Hardcoded JavaScript object
var myData = { "A" : "1", "B" : "2", "C" : "3" };
//Call to jQuery with object as an option
$("#mySelectorId").myJqueryFunction({values: myData});
myData
オブジェクトがそのように配線されていない必要があります。
Javaコードで「Aから1、Bから2、Cから3」の構造を簡単に取得し、それをMap
(または他のオブジェクト)に入れて、を介してリクエストに追加できrequest.setAttribute("myData", myMap);
ます。Map
(etc)を必要なJavaScriptオブジェクトに変換する方法がわかりません。これが私が試したことです。
//Java
Map<String, String> myMap = new TreeMap<String, String>();
map.put("A", "1");
map.put("B", "2");
map.put("C", "3");
request.setAttribute("myMap", myMap);
//JSP
<c:set var="myData" value="{" />
<c:forEach var="mapEntry" items="${myMap}" varStatus="counter">
<c:set var="myData" value="${myData}'${mapEntry.key}' : '${mapEntry.value}'" />
<c:if test="${counter.count < fn:length(myMap)}">
<c:set var="myData" value="${myData}, " />
</c:if>
</c:forEach>
<c:set var="myData" value="${myData}}" />
<script>
var myData = '${myData}';
$("#mySelectorId").myJqueryFunction({values: myData});
</script>
これはmyJqueryFunction
、次のようなことを実行しようとするポイントに到達するまで機能します。
var i = values[code];
基本的に、オブジェクト上の特定の変数を参照しようとしています(たとえば、「B」の値(2)を取得しようとしています)。code
これは、A / B/C値を保持する関数パラメーターであることに注意してください。
引用符を含めるか含めないかなどをいじってみまし${mapEntry.key}
たが、何も機能しないようです。
誰かがこれを機能させる方法を知っていますか?