上述語法中,c:forEach是一個(gè)JSP標(biāo)簽庫中的標(biāo)簽,表示循環(huán)遍歷給定的集合元素或數(shù)組元素。其中,items指定被遍歷的集合,var指定當(dāng)前遍歷的元素名,可以在標(biāo)簽體內(nèi)通過${item.name}的方式獲取元素中的屬性值。
在上述例子中,我們假設(shè)list是一個(gè)JavaBean組成的List,其中JavaBean中有name和age兩個(gè)屬性。
Key: ${entry.key}, value: ${entry.value}
使用forEach標(biāo)簽遍歷HashMap會(huì)稍微有點(diǎn)不同,我們需要將HashMap賦值到pageContext域中,然后在標(biāo)簽內(nèi)部通過${entry.key}、${entry.value}獲取鍵和值。
${status.index}
${item.name}
${item.age}
varStatus屬性可以獲得當(dāng)前遍歷元素的一些統(tǒng)計(jì)信息。例如在上面的例子中,我們可以通過status.index獲取當(dāng)前遍歷的下標(biāo),status.first表示是否是第一個(gè)元素,status.last則表示是否是最后一個(gè)元素。在標(biāo)簽體內(nèi),我們利用這些信息進(jìn)行一些特定的操作。
在這個(gè)例子中,我們希望控制步長(zhǎng)為3,輸出arr數(shù)組中每三個(gè)元素。我們可以使用step屬性來控制步長(zhǎng)。
在這個(gè)例子中,我們的departments是一個(gè)List,每個(gè)元素都是一個(gè)JavaBean,JavaBean中有一個(gè)name屬性表示部門名稱,有一個(gè)manager屬性表示部門經(jīng)理名稱,還有一個(gè)employees屬性表示該部門下屬員工列表。因此,我們需要使用嵌套的forEach標(biāo)簽進(jìn)行遍歷。外層的forEach標(biāo)簽遍歷部門列表,內(nèi)層的forEach標(biāo)簽遍歷每個(gè)部門的員工列表。