1

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

我的问题与此类似:oop through an Array to enable checkboxes

但我没有一个简单的 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 列表并检查它已经拥有的那些。

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

Travel 的机场列表为 ${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);

希望我足够清楚:)

4

2 回答 2

0

受到 ShaneA 帖子的启发,我最终在控制器上创建了一个 id 列表(travel.airports ids)并将其传递给 jsp。

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

本来希望直接在循环上使用 ${travel.airports} 但 jQuery 不喜欢 Airport 对象。

于 2013-01-21T13:24:40.970 回答
0

您应该能够使用选择器访问所有复选框,input[name=airportIds]因为它们都具有airportIds

$("input[name=airportIds]").attr("checked", "checked");

编辑


如果你想遍历Travel对象中的那些,你将不得不在页面上写一些额外的数据,或者一些内联的 JS。data-is-in-travel如果指定的机场是其中的一部分,则 可能在每个标签中设置一个 attr${travel.airports}

我是 C# 人(所以如果有语法错误,请见谅):

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

然后在 jQuery 中

$("input[data-is-in-travel=true]")
于 2013-01-17T20:19:09.713 回答