6

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" %>

それは正常に動作します。これら2つの違いと、を使用しようとすると例外がスローされる理由を知りたいです<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>。ところで、サーバーapache-tomcat-7.0.42を使用しています。私を助けてください。

4

2 に答える 2

4

非常に古いバージョンの JSP (正確には JSP 1.2 または 1.1) を使用していない限り、これらのいずれも使用しないでください。これらは JSTL 1.0 URI であり、最新バージョンの JSP には適していません。

2 つのライブラリの違いは、一方はタグ属性値としてランタイム式を許可し、もう一方は許可しないという点です。JSP エンジンがすべての式の評価を行う最新の JSP および JSTL では、もはや関係ありません。

于 2013-09-22T13:25:34.920 に答える
0

_rtバージョンによってURIが異なるため(追加)、例外が発生すると思います。そのため、_rt使用しているjar内のタグに対してtaglibのインポートが間違っています。

違いは、1 つは表現言語${someExpr}を許可し、用語は scriptlets に依存すること<%= some code %>です。Google で適切な詳細を見つけることができるはずです。

于 2013-09-22T13:26:55.783 に答える