簡體   English   中英

JSP EL表達式在標記文件中不起作用

[英]JSP EL expressions not working in tag files

我們正在嘗試將Java Web應用程序從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>

奇怪的是,在包含標簽EL表達式的JSP中,它們完美地工作了。

我什至嘗試在.tag文件中設置isELIgnored="false"屬性,但出現此錯誤:

Tag指令:非法,多次出現帶有不同值的isELIgnol(舊:true,新:false)

舊的(真實)價值從何而來? 我們從未指定。


其他一些信息:

始終使用<%@ taglib uri =“ http://java.sun.com/jsp/jstl/core” prefix =“ c”%>包含(.jsp和.tag文件中)taglib。

我們將standard.jarjstl.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">

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,請不要在Tomcat的lib目錄中安裝JAR,請將其保存在應用程序的WEB-INF\\lib目錄中。 順便說一下,從JSP 2.0開始,EL是JSP固有的一部分,因此不需要JSTL進行評估。

由於它適用於JSP,但不適用於標簽,因此,如果具有jsp-version元素,也可以檢查.tld:

<?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元素。

這是Tomcat中的錯誤。 我在此處提交了錯誤報告: https : //issues.apache.org/bugzilla/show_bug.cgi?id=52931

要解決此問題,只需將屬性“ jspversion”留空,如@Ceren建議。

您確定您有JSTL 1.2罐子嗎? 您需要具有該版本才能識別${foo}而無需使用<c:out/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM