循环访问Object数组以启用复选框

时间:2013-01-17 20:10:26

标签: jquery spring

我一直在寻找,但我无法找到我需要的东西。

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

但我没有简单的var数组。让我们说我有一个物体旅行与机场列表。我想编辑我的旅行。在我的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的机场列表是$ {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);

希望我足够清楚:)

2 个答案:

答案 0 :(得分: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]")

答案 1 :(得分:0)

在ShaneA帖子的启发下,我最终在控制器上创建了一个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);

从那里我做了:

var airportsIds = ${airportsIds};
$.each(airportsIds, function() {
    $("#" + this).attr("checked", "checked");
})

会优先在循环中使用$ {travel.airports},但jQuery不喜欢Airport对象。