0

関連する多くの属性を含む「Device」というモデル クラスがあるとします。Javascript を使用してチェックボックスに「Device」オブジェクトを取得する方法はありますか?

明確に説明しなかった場合、サンプルは次のとおりです。

JSP ページ:

<c:forEach var="device" items="${row.deviceList}">
    <input type="checkbox" name="deviceDetails" value="${device}">
    <c:out value="${device.equipNo}" />
</c:forEach>

Javascript:

var total = document.getElementsByName("deviceDetails");
// run through all element of checkedbox named deviceDetails
for(j=0; j<total.length; j++)
{
  <!-- get instance Device object ? -->
  alert(total[j].value);
}

「Device」オブジェクトではなく toString() 関数の文字列のみを返す total[j].value を呼び出そうとしました。

このようにする目的は、「デバイス」オブジェクト全体を取得できない場合、チェックボックスを使用してすべての属性を 1 つずつ取得し、Javascript で「デバイス」オブジェクトとして組み立てる必要があるためです。そのような:

JSP ページ:

<c:forEach var="device" items="${row.deviceList}">
    <input type="checkbox" name="id" value="${device.stnID}">
    <c:out value="${device.stnID}" />
    <input type="checkbox" name="stnName" value="${device.stnName}">
    <c:out value="${device.stnName}" />
    <input type="checkbox" name="equipNo" value="${device.equipNo}">
    <c:out value="${device.equipNo}" />
</c:forEach>

Javascript:

var allID = document.getElementsByName("id");
var allName = document.getElementsByName("stnName");
var allNo = document.getElementsByName("equipNo");

var deviceList = new Array(); 
var device = new Object();

for(i=0; i<allID.length; i++)
{
    device.id = allID[i].value; 
    device.stnName = allName[i].value; 
    device.equipNo = allNo[i].value;

     deviceList.push(device);
}

個人的には、2 番目のアプローチは良い考えではないと思います。したがって、ここの誰かが、チェックボックスでパスバイオブジェクトを解決するためのより良い提案やアイデアを提供してくれることを願っています。どうもありがとう!

4

1 に答える 1

0

Java ObjectsあなたのようにJavascriptによって解釈されるように渡すことはできません。Java と JS の両方の言語で理解できる表記法にオブジェクトを変換する必要があります。これを行うために私が使用する方法は、Java オブジェクトを JSON に変換し、JavaScript を使用してクライアント側で取得することです。

于 2013-02-22T10:11:19.173 に答える