【问题标题】:Difference between core and core_rt jstl tagcore和core_rt jstl标签的区别
【发布时间】:2013-09-22 13:08:26
【问题描述】:

当我在我的 struts 1.3.10 项目中使用 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 时,它会引发以下异常:

org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:56)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:445)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:117)
    org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:311)
    org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:152)
    org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:410)
    org.apache.jasper.compiler.Parser.parseDirective(Parser.java:475)
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1427)
    org.apache.jasper.compiler.Parser.parse(Parser.java:138)
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242)
    org.apache.jasper.compiler.ParserController.parse(ParserController.java:102)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1083)
    org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:295)
    org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:396)
    org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:347)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:232)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

然后当我把它改成

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>

它工作正常。我想知道这两者之间有什么区别,以及为什么当我尝试使用&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt; 时它会抛出异常。顺便说一句,我使用服务器 apache-tomcat-7.0.42。请帮帮我。

【问题讨论】:

    标签: java jstl struts1


    【解决方案1】:

    除非您使用的是非常旧的 JSP 版本(确切地说是 JSP 1.2 或 1.1),否则您不应该使用其中任何一个。这些是 JSTL 1.0 URI,不适合现代版本的 JSP。

    这两个库的不同之处在于一个允许运行时表达式作为标记属性值,而一个不允许。在现代 JSP 和 JSTL 中,JSP 引擎执行所有表达式求值,它不再相关。

    【讨论】:

    • @vhisal-kukreja,如何知道netbean中jsp的版本?
    • @gjman2, 创建简单的 JSP 页面并输入以下代码: JSP 版本:
    • 我的 jsp 是 2.2,现在正在做 wat 吗?
    【解决方案2】:

    我认为你得到了例外,因为_rt 版本的 URI 不同(附加了_rt),所以你的 taglib 导入对于你正在使用的 jar 中的标签是错误的。

    不同之处在于,一种允许表达式语言${someExpr},而该术语依赖于scriptlet &lt;%= some code %&gt;。您应该能够通过 Google 找到适当的详细信息。

    【讨论】:

      猜你喜欢
      • 2015-09-30
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      • 2019-09-23
      • 2020-09-28
      • 2011-08-27
      • 1970-01-01
      • 2014-01-31
      相关资源
      最近更新 更多