2013-02-22 108 views
0

假设有一个名为“设备”的模型类,它包含许多相关的属性,有什么办法通过使用Javascript获取复选框中的“设备”对象?Javascript:从复选框中获取对象

如果我没有明确阐述,这里是样本:

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); 
} 

我试图打电话给总[J]。值只返回了toString()函数的字符串,而不是“Device”对象。

我这样做的目的是因为如果我无法获得整个“设备”对象,我需要通过复选框逐个获取每个属性,并将它们组装为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); 
} 

就个人而言,我不认为第二种方法是一个好主意。因此,希望这里的某个人能给出更好的建议或任何想法来解决复选框中的传递对象。非常感谢!

回答

0

你不能像你那样通过Java Objects来解释Javascript。您需要将对象转换为Java和JS这两种语言都可以理解的符号。我用这样做的一种方式是将我的java对象转换为JSON,并通过客户端使用javascript获取它。

+0

谢谢,杰弗逊。我设法使用JSON来完成,我发现它在前端JSP和后端servlet之间进行通信非常有用。顺便说一句,我使用前端JSP的默认JSON2.js和后端Java Servlet的Gson。他们工作很棒! – ShadowScorpion 2013-03-05 02:14:25