В некоторых случаях при компиляции JSP вы можете получить следующее сообщение:

According to TLD or attribute directive in tag file, attribute value does not accept any expressions

Что это за проблема и как ее решить?

Эта ошибка происходит потому, что JSP использует спецификацию JSP 1.2 (и JSTL 1.0), поэтому не понимает выражения EL (Expression Language).  Для того, чтобы в вашем приложении использовалась правильная версия спецификации необходимо сделать две вещи:

  1. Сослаться на правильную спецификацию сервлета в дескрипторе развертывания:
    <web-app version="2.5" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  2. Указать правильную ссылку на JSTL в JSP-странице.

    В JSP 1.2:

    <%@ taglib uri='http://java.sun.com/jstl/core' prefix='c'%>

    В JSP 2.0:

    <%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>
Сравнение спецификаций
Версия 2.3 2.4 2.5
Сборочная схема (deployment schema) http://java.sun.com/dtd/web-app_2_3.dtd http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
Версия сервлетов 2.3 2.4 2.5
Версия JSP 1.2 2.0 2.0
Версия JSTL 1.0 1.1 1.1
Ссылка на Core JSTL http://java.sun.com/jstl/core http://java.sun.com/jsp/jstl/core http://java.sun.com/jsp/jstl/core
Версия Tomcat 4.x 5.x 6.x