Недавно я обновил свой tomcat для разработки с 7.0.0 до 7.0.4. У меня были такие вещи, как:
<c:set var="static" value=".." />
<c:set var="class" value=".." />
Оба работали на 7.0.0, но перестали работать на 7.0.4. Я открыл ошибку , она была закрыта, с ответом:
Сам по себе этот тег будет компилироваться.
Проверки идентификаторов Java были добавлены в обработку EL, поэтому я подозреваю
у вас есть незаконный EL в другом месте на странице.
Это звучало не совсем ясно, но я не получил последующего ответа, поэтому я посмотрел на спецификацию EL. Для JSP 2.1 (последняя версия 2.2) я обнаружил, что:
Глава 1, стр. 21: идентификатор должен быть идентификатором Java - например, нет -, нет / и т. Д.
И это самое, что я нашел. Я прочел бы эту строку таким образом, чтобы применялись требования синтаксиса, применяемые к идентификаторам Java, но не зарезервированные слова (так как соседние class
или static
появляются в списке зарезервированных слов в EL). JLS не упоминается для термина «идентификатор Java» (и для некоторых других случаев в спецификации 2.2, которые я не рассмотрел полностью)
Итак, вправе ли Tomcat отклонить эти имена; на какую точку спецификации они ссылаются, и, по-вашему, они правильно ее интерпретируют.