[英]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.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">
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.