Re: JSTL: getting a map's keys
On 3/19/2012 3:08 PM, Tim Slattery wrote:
Chris Riesbeck<Chris.Riesbeck@gmail.com> wrote:
<p>jstl: ${rates.keys}</p>
The EL here finds the object "rates" and looks for an attribute named
"keys". That means that if rates doesn't have a public method named
getKeys, the EL won't find anything.
Which it does. Here's a complete example, class and test JSP, and the
HTML output I get
****** CLASS
package example;
import java.util.HashMap;
import java.util.Set;
public class SimTable extends HashMap<String, Object> {
public Set<String> getKeys() {
return keySet();
}
}
****** JSP
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
final example.SimTable data = new example.SimTable();
data.put("Bill", 100); data.put("Mary", 150); data.put("Fred", 200);
pageContext.setAttribute("data", data);
%>
<!doctype HTML>
<html>
<head>
<title>Test</title>
</head>
<body>
<p>data: ${data}</p>
<p>data.keys: ${data.keys}</p>
<p>data.getKeys():
<%= ((example.SimTable) pageContext.findAttribute("data")).getKeys() %>
</p>
</body>
</html>
****** HTML output
<!doctype HTML>
<html>
<head>
<title>Test</title>
</head>
<body>
<p>data: {Bill=100, Mary=150, Fred 0}</p>
<p>data.keys: </p>
<p>data.getKeys():
[Bill, Mary, Fred]
</p>
</body>
</html>