2013-01-17 32 views
1

我一直在尋找,但我找不到我需要的東西。通過對象數組循環啓用複選框

我的問題是類似這樣的:oop through an Array to enable checkboxes

但我沒有一個簡單的變種數組。比方說,我有一個對象旅行與機場列表。我想編輯我的旅行。在我的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循環,並檢查那些已經擁有。

$ {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); 

希望我是足夠清晰的:)

+0

$ {travel.airports}包含什麼?發佈樣本值。 –

+0

正如Kabilan所說,它取決於您是否在JSP中以什麼格式輸出$ {travel.airports}的值,因爲這會影響jQuery如何使用這些值。 – Nick

+0

增加了更多的代碼。如果你需要其他東西,讓我知道! – Ani

回答

0

你應該能夠ACCE SS都因爲他們都使用選擇input[name=airportIds]的複選框中有airportIds

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

編輯


的名稱,如果你想通過那些在Travel對象的那些環,你將不得不在頁面上寫入一些額外的數據,或者寫入一些內聯JS。也許在每個標籤設置生成的attr 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]") 
+0

好的。但我只想檢查旅行的人。如果我理解正確,那將檢查列表中的所有機場。對? – Ani

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的不喜歡機場的對象。