JSP EL выражения не работают в файлах тегов - PullRequest
3 голосов
/ 01 июля 2010

Мы пытаемся переместить наше веб-приложение Java с сервера Tomcat 5.5 на более современный сервер Tomcat 6.0.24, но у нас возникают некоторые проблемы с JSP EL.

Выражения, размещенные в файлах тегов XMLне распознаются сервером, который просто отображает их как текст (как в следующем примере).Есть идеи, почему?

<object id="${id}"
        classid="java:${code}.class"
        type="application/x-java-applet;version=1.5"
        archive="${archive}" codebase="${codebase}"
        height="${height}" width="${width}" > 
    <param name="code" value="${code}" /> 
    <param name="codebase" value="${codebase}" /> 
    <param name="archive" value="${archive}" /> 
    <param name="type" value="application/x-java-applet;version=1.5"/> 
    <param name="mayscript" value="true" /> 

    <param name="cache_archive" value="wetorrent.jar,weupnp.jar" /> 
        <param name="cache_version" value="0.0.0.17,0.0.0.17" />    
    <strong> 
        <span style="cursor: pointer" onclick="window.open('http://www.java.com/','_blank','toolbar=1,scrollbars=1,location=1,statusbar=1,menubar=1,resizable=1');"> 
            This browser does not have a Java Plug-in.<br /> 
            Get the latest Java Plug-in here.</span> 
    </strong> 

</object>

Странная вещь в том, что в JSP, которые включают выражение EL тега, работают отлично.

Я даже пытался установить атрибут isELIgnored="false" в файле .tag, но я получил эту ошибку:

Директива тега: недопустимо иметь несколько экземпляров isEL. Игнорируется с разными значениями (old: true, new: false)

Где находитсястарое (истинное) значение взято?Мы никогда не указывали это.


Другая информация:

Taglib всегда включается (в файлы .jsp и .tag) с использованием <% @ taglib uri= "http://java.sun.com/jsp/jstl/core" prefix =" c "%>

Мы помещаем standard.jar и jstl.jar в каталог сервера lib/.

web.xml начинается со следующей строки:

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

Ответы [ 4 ]

4 голосов
/ 01 июля 2010

Tomcat 6.0 - это контейнер Servlet 2.5 и JSP 2.1. Сначала попробуйте использовать следующий <web-app> начальный тег:

<web-app 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"
     version="2.5">

Кроме того, если вы используете JSTL, не устанавливайте JAR в директорию Tomcat lib, сохраняйте их в директории WEB-INF\lib приложения. Кстати, начиная с JSP 2.0, EL является частью собственно JSP, поэтому JSTL не требуется для его оценки.

3 голосов
/ 04 января 2012

Поскольку он работает с JSP, но не с тегами, вы также можете проверить .tld, если у вас есть элемент jsp-version, который может быть причиной:

<?xml version="1.0" encoding="ISO-8859-1" ?>
    <taglib xmlns="http://java.sun.com/xml/ns/j2ee" version="2.0">
        <tlib-version>2.0</tlib-version>
        <jsp-version>1.2</jsp-version>

просто удалите элемент jsp-version.

2 голосов
/ 17 марта 2012

Это ошибка в Tomcat. Я отправил сообщение об ошибке здесь: https://issues.apache.org/bugzilla/show_bug.cgi?id=52931

Чтобы обойти это, просто оставьте атрибут "jspversion" пустым, как предложил @Ceren.

0 голосов
/ 01 июля 2010

Вы уверены, что у вас есть банки JSTL 1.2?Вам нужна эта версия, чтобы распознавать ${foo} без <c:out/>, я думаю.

...