代码之家  ›  专栏  ›  技术社区  ›  abahgat

JSP EL表达式不在标记文件中工作

  •  3
  • abahgat  · 技术社区  · 14 年前

    我们正试图将我们的Java Web应用程序从Tomcat 5.5服务器移动到一个更现代的Tomcat 60.241,但是我们在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中,它工作得很好。

    我甚至尝试设置 isELIgnored="false" .tag文件中的属性,但出现以下错误:

    标记指令:使用不同的值(old:true、new:false)进行多次IsAligned是非法的。

    旧(真)值是从哪里来的?我们从未具体说明过。


    其他信息:

    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 回复  |  直到 12 年前
        1
  •  2
  •   Thiago Duarte    12 年前

    这是Tomcat的一个bug。我在这里提交了一份错误报告: https://issues.apache.org/bugzilla/show_bug.cgi?id=52931

    要解决这个问题,只需将属性“jspversion”留空,如@ceren建议的那样。

        2
  •  4
  •   kschneid    14 年前

    Tomcat6.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中安装JAR。 lib 总监,把它们放在应用程序中 WEB-INF\lib 迪尔顺便说一下,从JSP 2.0开始,EL是JSP本身的一部分,因此不需要JSTL来进行评估。

        3
  •  3
  •   Ceren    13 年前

    因为它与JSP一起工作,但不与标签一起工作,所以您也可以检查.tld,如果您有JSP版本元素,这可能是原因:

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

        4
  •  0
  •   Ben J    14 年前

    你确定你有JSTL1.2罐子吗?你需要有那个版本来识别 ${foo} 没有 <c:out/> 我想。