В некоторых случаях при компиляции 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). Для того, чтобы в вашем приложении использовалась правильная версия спецификации необходимо сделать две вещи:
- Сослаться на правильную спецификацию сервлета в дескрипторе развертывания:
<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">
- Указать правильную ссылку на 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 |


#1 by Artos on 28 Сентябрь 2009 - 0:39
Quote
Да и еще хочется добавить, что если используешь версию Tomcat 6.0, то нужно следующее:
Servlet 2.5, jsp 2.1,jstl 1.2 . Ох и попарился я недавно с этим, а оказывается все просто)))
#2 by Дмитрий Леонтьев on 28 Сентябрь 2009 - 8:17
Quote
Всё как раз таки наоборот. Чтобы использовать Servlet 2.5, jsp 2.1 и jstl 1.2 нужен Tomcat версии не ниже 6.0. На Tomcat 5.5 вы сможете запустить сервлеты, соответствующие спецификации сервлетов версии не выше 2.4.
Но на Tomcat 6.x будут работать сервлеты с версиями спецификаций 2.3, 2.4 и 2.5.
#3 by Artos on 29 Сентябрь 2009 - 10:35
Quote
Что же тут наоборот, вы просто добавили что можно использовать версии сервлетов 2.3 и 2.4 под Tomcat 6.0 кстати не знал этого.
#4 by Дмитрий Леонтьев on 29 Сентябрь 2009 - 10:44
Quote
Ваше утверждение: “Чтобы использовать Tomcat 6 нужно использовать Servlet 2.5″.
Моё утверждение: “Чтобы использовать Servlet 2.5 нужен Tomcat 6″.
#5 by akaBura on 29 Сентябрь 2009 - 11:05
Quote
Дмитрий прав..
Что бы использовать Tomcat 6 можно обойтись и без Servlet 2.5..