Jquery 循环对象数组以启用复选框

Jquery 循环对象数组以启用复选框,jquery,spring,Jquery,Spring,我一直在找,但我找不到我真正需要的东西 我的问题与此类似: 但是我没有一个简单的var数组。比如说,我有一个带有机场列表的对象Travel。我想编辑我的旅行。在我的jsp中,我有机场的完整列表:我正在使用Spring <c:forEach var="airport" items="${airports}"> <tr> <td><input type="checkbox" name="airportsIds" value="${airpo

我一直在找,但我找不到我真正需要的东西

我的问题与此类似:

但是我没有一个简单的var数组。比如说,我有一个带有机场列表的对象Travel。我想编辑我的旅行。在我的jsp中,我有机场的完整列表:我正在使用Spring

<c:forEach var="airport" items="${airports}">
   <tr>
      <td><input type="checkbox" name="airportsIds" value="${airport.id}" /></td>
      <td><c:out value="${airport.name}" /></td>
   </tr>
</c:forEach>
现在,我想使用jQuery循环遍历我的Travel对象的机场列表,并检查它已经拥有的机场

${airports}是机场的完整列表

旅行机场的名单将是${Travel.airports}

public class Travel {
    private List<Airport> airports;
    ...
}

public class Airport {
    private String Id;
    private String Name;
    private String Country;
    ...
}
类的简化版本

我的控制器中有一个方法,如下所示:

mav.getModelMap().put("travel", travel); //commandObject
List<Airports> airports = getAllAirportsFromDB();
mav.getModelMap().put("airports", airports);

希望我说得够清楚:

您应该能够使用选择器输入[name=airportIds]访问所有复选框,因为它们都有airportIds的名称

编辑

如果要循环遍历Travel对象中的数据,则必须在页面上或内联JS中写入一些额外的数据。如果指定的机场是${travel.airports}的一部分,则可能在每个标记集中都有一个attr数据在旅行中

public class Travel {
    private List<Airport> airports;
    ...
}

public class Airport {
    private String Id;
    private String Name;
    private String Country;
    ...
}
我是C语言人员,如果有语法错误,请原谅:

<td><input type="checkbox" name="airportsIds" value="${airport.id}" 
     data-is-in-travel="${travel.airports.contains(airport)}"/></td>

在ShaneA post的指导下,我在控制器上创建了一个id travel.airports id列表,并将其传递给jsp

List<Long> aiportIds = new ArrayList<Long>();
for (Airport a : travel.getAirports()) {
    aiportIds.add(a.getId());
}
mav.getModelMap().put("aiportIds", allowed);

可能会希望直接在循环中使用${travel.airports},但jQuery不喜欢Airport对象。

Ok。但我只想看看旅行社有哪些。如果我理解正确的话,这会检查名单上的所有机场。对吗${travel.airports}包含什么?发布示例值。正如Kabilan所说,这取决于您是否在JSP中输出了${travel.airports}的值以及输出的格式,因为这会影响jQuery如何处理这些值。添加了更多代码。如果你还需要什么,请告诉我!
List<Long> aiportIds = new ArrayList<Long>();
for (Airport a : travel.getAirports()) {
    aiportIds.add(a.getId());
}
mav.getModelMap().put("aiportIds", allowed);
var airportsIds = ${airportsIds};
$.each(airportsIds, function() {
    $("#" + this).attr("checked", "checked");
})