[ ] operator in jsp with EL expression


String index is coerced to an int for arrays and Lists

String[] favoriteMusic = {“Zero 7”, “Tahiti 80”, “BT”, “Frou Frou”};
request.setAttribute(“musicList”, favoriteMusic);

First song is: ${musicList[0]}

Second song is: ${musicList[“1”]}

All : ${musicList}


Maps you can use either operator

java.util.Map musicMap = new java.util.HashMap();
musicMap.put(“Ambient”, “Zero 7”);
musicMap.put(“Surf”, “Tahiti 80”);
musicMap.put(“DJ”, “BT”);
musicMap.put(“Indie”, “Travis”);
request.setAttribute(“musicMap”, musicMap);

Ambient is: ${musicMap.Ambient}
Ambient is: ${musicMap[“Ambient”]}

request.setAttribute(“Genre”, “Ambient”);

Music is ${musicMap[Genre]} evaluates to Music is ${musicMap[ “Ambient” ]}

Nested expressions

java.util.Map musicMap = new java.util.HashMap();
musicMap.put(“Ambient”, “Zero 7”);
musicMap.put(“Surf”, “Tahiti 80”);
musicMap.put(“DJ”, “BT”);
musicMap.put(“Indie”, “Frou Frou”);
request.setAttribute(“musicMap”, musicMap);

String[] musicTypes = {“Ambient”, “Surf”, “DJ”, “Indie”};

request.setAttribute(“MusicType”, musicTypes);

This DOES work in a JSP

Music is ${musicMap[MusicType[0]]}

becomes


Music is ${musicMap[“Ambient”]}

Note

This  ${musicMap.Ambient} ( It works )
Is the same as this ${musicMap[“Ambient”]} ( It works )

But this ${musicList[“1”]} CANNOT be turned into this ${musicList.1}