[Bear edit: consolidated multiple replies. Craig, please make corrections by editing your original reply rather than making multiple replies with corrections.] [ April 12, 2005: Message edited by: Bear Bibeault ]
You do NOT need: <%@ page isELIgnored="true" %> You need to replace this: <%@ taglib uri='http://java.sun.com/jstl/core' prefix='c'%> with: <%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>
Mikes solution is WRONG! You should NOT be disabling EL evaluation on the page. Ok, it does make it work, but there is a better approach. USE THE CORRECT JSTL URI!!!
It is frustrating to me that - there is an FAQ on this subject (that obviously noone reads) - this question gets asked at least once every couple of days - Despite the numerous correct answers given, people can still come up with the wrong solution, and then other people USE THAT INCORRECT SOLUTION!
If you have a JSP1.2 container (Tomcat 4), use JSTL1.0: <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%> If you have a JSP2.0 container (Tomcat 5), user JSTL1.1: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
Note the subtle difference with the addition of "/jsp" in there? JSTL1.0 has to evaluate the expression itself, and so you can't use runtime expression values for that taglib. JSTL1.1 expects the container to handle the expression - so it accepts runtime expressions. [ August 01, 2006: Message edited by: Stefan Evans ]