我一直在寻找,但我无法找到我需要的东西。
我的问题与此类似: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);
希望我足够清楚:)
答案 0 :(得分:0)
您应该可以使用选择器input[name=airportIds]
访问所有复选框,因为它们都名为airportIds
$("input[name=airportIds]").attr("checked", "checked");
修改强>
如果要遍历Travel
对象中的那些,则必须在页面上或某些内联JS中写入一些额外的数据。如果指定的机场属于data-is-in-travel
${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对象。