【问题标题】:org.apache.jasper.JasperException in jsf applicationjsf 应用程序中的 org.apache.jasper.JasperException
【发布时间】:2012-12-03 08:15:18
【问题描述】:

打开 jspx 页面时出现以下错误。

org.apache.jasper.JasperException: /login.jspx(9,54) Document root element "ui:composition", must match DOCTYPE root "composition".
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:88)
    at org.apache.jasper.compiler.JspDocumentParser.parse(JspDocumentParser.java:214)
    at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:239)
    at org.apache.jasper.compiler.ParserController.parseDirectives(ParserController.java:120)
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:180)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:347)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:589)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

JSF文件内容:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition
    template="/jsp/common/classic-template-login.jspx"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:c="http://java.sun.com/jstl/core"
        xmlns:ice="http://www.icesoft.com/icefaces/component"
        xmlns:ui="http://java.sun.com/jsf/facelets" >

    <div align="left"><ui:define name="title">OES Admin</ui:define></div>

    <ui:define name="toolbar">
    </ui:define>

    <ui:define name="pageView">

    <ui:decorate template="/jsp/common/page-include-template.jspx">

        <ui:define name="pageName" ></ui:define>

        <ui:define name="pageActions">
        </ui:define>

        <ui:define name="pageContent">
            <ui:include src="/WEB-INF/includes/login.jspx"/>
        </ui:define>        
      </ui:decorate>
    </ui:define>
</ui:composition>

【问题讨论】:

    标签: java jsp jsf tomcat icefaces


    【解决方案1】:

    请注意您的术语:这是一个 facelets 页面,而不是 JSP 页面。仅仅因为你将你的 url 映射到 '*.jspx' 并没有做到这一点。您可能会认为这是一件小事,但 facelets 完全替代了 JSP 技术,并且在底层的工作方式完全不同。

    我能发现我自己的 facelets 页面之间的唯一区别是我的 facelets 页面有一个额外的命名空间声明。

    <ui:composition xmlns="http://www.w3.org/1999/xhtml"
    

    【讨论】:

    • OP 实际上使用的是 JSPX,而不是 Facelets(请参阅异常消息中的文件名和堆栈跟踪中的 JSP 编译器调用)。 JSPX 是 ICEfaces 1.x 推荐的遗留物(在 Facelets 引入之前很久)。 Facelets 标记实际上在 JSP(X) 中根本不起作用,因此会出现此错误。 OP 很可能正在阅读完全过时的 ICEfaces 教程/指南。
    猜你喜欢
    • 1970-01-01
    • 2017-01-18
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 2012-03-25
    • 1970-01-01
    相关资源
    最近更新 更多