ICEfaces
  1. ICEfaces
  2. ICE-1958

Using /faces/* mappings cause images to be incorrectly handled

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.6
    • Fix Version/s: 1.6.1
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      win xp

      Description

      When using a /faces/* mapping in your web.xml instead of an extension mapping, all images and resources will follow the same mapping.
      In 1.5.3 an images resolved as /faces/image.jpg would be handled correctly and served to the client. Now, in 1.6, the following exception occurs when using any custom image:

      Aug 3, 2007 4:22:19 PM org.apache.catalina.core.StandardWrapperValve invoke
      SEVERE: Servlet.service() for servlet Persistent Faces Servlet threw exception
      javax.faces.FacesException: Problem in renderResponse: Invalid byte 1 of 1-byte UTF-8 sequence.
      at com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:308)
      at com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:154)
      at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107)
      at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:268)
      at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137)
      at com.icesoft.faces.webapp.http.core.PageServer$1.respond(PageServer.java:26)
      at com.icesoft.faces.webapp.http.servlet.ServletRequestResponse.respondWith(ServletRequestResponse.java:125)
      at com.icesoft.faces.webapp.http.core.PageServer.service(PageServer.java:31)
      at com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:16)
      at com.icesoft.faces.webapp.http.servlet.SingleViewServlet.service(SingleViewServlet.java:45)
      at com.icesoft.faces.webapp.http.servlet.PathDispatcher$Matcher.serviceOnMatch(PathDispatcher.java:52)
      at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:29)
      at com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet.service(MainSessionBoundServlet.java:97)
      at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:35)
      at com.icesoft.faces.webapp.http.servlet.PathDispatcher$Matcher.serviceOnMatch(PathDispatcher.java:52)
      at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:29)
      at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:85)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
      at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
      at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
      at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
      at java.lang.Thread.run(Thread.java:595)
      Caused by: org.apache.xerces.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.
      at org.apache.xerces.impl.io.UTF8Reader.invalidByte(Unknown Source)
      at org.apache.xerces.impl.io.UTF8Reader.read(Unknown Source)
      at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
      at org.apache.xerces.impl.XMLEntityScanner.skipString(Unknown Source)
      at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
      at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
      at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
      at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
      at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
      at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
      at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
      at javax.xml.parsers.SAXParser.parse(SAXParser.java:176)
      at com.sun.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:237)
      at com.sun.facelets.compiler.Compiler.compile(Compiler.java:108)
      at com.sun.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFaceletFactory.java:192)
      at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:141)
      at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:93)
      at com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:287)
      ... 31 more

        Activity

        Hide
        dukehoops added a comment -

        I tried the suggested workaround:

        <ice:outputLink value="#

        {facesContext.externalContext.requestContextPath}

        /go/creds">
        <img src="../assets/img/home3/membertools.jpg"/>
        </ice:outputLink>

        But still on render I see:

        FINEST: INCOMING: [ThreadId=43] http://localhost:8080/website/faces/assets/img/home3/membertools.jpg
        Aug 6, 2007 10:55:05 AM net.eviltwinstudios.webcommon.HibernateThreadFilter doFilter
        FINEST: TX started; URI=/website/faces/assets/img/home3/membertools.jpg
        Aug 6, 2007 10:55:05 AM net.eviltwinstudios.webcommon.auth.LoginFilter redirectToLogin
        INFO: checking authentication requirement for viewId=/assets/img/home3/membertools.jpg
        Aug 6, 2007 10:55:05 AM net.eviltwinstudios.webcommon.auth.LoginFilter isAuthorized
        INFO: checking authorizationg requirement for viewId=/assets/img/home3/membertools.jpg
        Aug 6, 2007 10:55:05 AM net.eviltwinstudios.webcommon.auth.LoginFilter doFilter
        INFO: AAA passed for uri=/website/faces/assets/img/home3/membertools.jpg
        Aug 6, 2007 10:55:05 AM net.eviltwinstudios.website.account.EnterPasswordListener beforePhase
        INFO: incoming url=/website/faces/assets/img/home3/membertools.jpg?null, viewId=/assets/img/home3/membertools.jpg
        Aug 6, 2007 10:55:05 AM net.eviltwinstudios.website.help.FAQExpandSectionListener beforePhase
        INFO: viewId = /assets/img/home3/membertools.jpg
        Aug 6, 2007 10:55:05 AM com.icesoft.faces.facelets.D2DFaceletViewHandler renderResponse
        SEVERE: Problem in renderResponse: Invalid byte 1 of 1-byte UTF-8 sequence.
        java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.
        at org.apache.xerces.impl.io.UTF8Reader.invalidByte(Unknown Source)
        at org.apache.xerces.impl.io.UTF8Reader.read(Unknown Source)
        at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
        at org.apache.xerces.impl.XMLEntityScanner.skipString(Unknown Source)
        at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
        at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
        at javax.xml.parsers.SAXParser.parse(SAXParser.java:176)
        at com.sun.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:237)
        at com.sun.facelets.compiler.Compiler.compile(Compiler.java:108)
        at com.sun.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFaceletFactory.java:192)
        at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:141)
        at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:93)
        at com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:287)
        at com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:154)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137)
        at com.icesoft.faces.webapp.http.core.PageServer$1.respond(PageServer.java:26)
        at com.icesoft.faces.webapp.http.servlet.ServletRequestResponse.respondWith(ServletRequestResponse.java:125)
        at com.icesoft.faces.webapp.http.core.PageServer.service(PageServer.java:31)
        at com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:16)
        at com.icesoft.faces.webapp.http.servlet.MultiViewServlet.service(MultiViewServlet.java:53)
        at com.icesoft.faces.webapp.http.servlet.PathDispatcher$Matcher.serviceOnMatch(PathDispatcher.java:52)
        at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:29)
        at com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet.service(MainSessionBoundServlet.java:97)
        at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:35)
        at com.icesoft.faces.webapp.http.servlet.PathDispatcher$Matcher.serviceOnMatch(PathDispatcher.java:52)
        at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:29)
        at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:85)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

        This problem is blocking upgrade to 1.6.0 from 1.5.3

        Show
        dukehoops added a comment - I tried the suggested workaround: <ice:outputLink value="# {facesContext.externalContext.requestContextPath} /go/creds"> <img src="../assets/img/home3/membertools.jpg"/> </ice:outputLink> But still on render I see: FINEST: INCOMING: [ThreadId=43] http://localhost:8080/website/faces/assets/img/home3/membertools.jpg Aug 6, 2007 10:55:05 AM net.eviltwinstudios.webcommon.HibernateThreadFilter doFilter FINEST: TX started; URI=/website/faces/assets/img/home3/membertools.jpg Aug 6, 2007 10:55:05 AM net.eviltwinstudios.webcommon.auth.LoginFilter redirectToLogin INFO: checking authentication requirement for viewId=/assets/img/home3/membertools.jpg Aug 6, 2007 10:55:05 AM net.eviltwinstudios.webcommon.auth.LoginFilter isAuthorized INFO: checking authorizationg requirement for viewId=/assets/img/home3/membertools.jpg Aug 6, 2007 10:55:05 AM net.eviltwinstudios.webcommon.auth.LoginFilter doFilter INFO: AAA passed for uri=/website/faces/assets/img/home3/membertools.jpg Aug 6, 2007 10:55:05 AM net.eviltwinstudios.website.account.EnterPasswordListener beforePhase INFO: incoming url=/website/faces/assets/img/home3/membertools.jpg?null, viewId=/assets/img/home3/membertools.jpg Aug 6, 2007 10:55:05 AM net.eviltwinstudios.website.help.FAQExpandSectionListener beforePhase INFO: viewId = /assets/img/home3/membertools.jpg Aug 6, 2007 10:55:05 AM com.icesoft.faces.facelets.D2DFaceletViewHandler renderResponse SEVERE: Problem in renderResponse: Invalid byte 1 of 1-byte UTF-8 sequence. java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence. at org.apache.xerces.impl.io.UTF8Reader.invalidByte(Unknown Source) at org.apache.xerces.impl.io.UTF8Reader.read(Unknown Source) at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source) at org.apache.xerces.impl.XMLEntityScanner.skipString(Unknown Source) at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at javax.xml.parsers.SAXParser.parse(SAXParser.java:375) at javax.xml.parsers.SAXParser.parse(SAXParser.java:176) at com.sun.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:237) at com.sun.facelets.compiler.Compiler.compile(Compiler.java:108) at com.sun.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFaceletFactory.java:192) at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:141) at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:93) at com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:287) at com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:154) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137) at com.icesoft.faces.webapp.http.core.PageServer$1.respond(PageServer.java:26) at com.icesoft.faces.webapp.http.servlet.ServletRequestResponse.respondWith(ServletRequestResponse.java:125) at com.icesoft.faces.webapp.http.core.PageServer.service(PageServer.java:31) at com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:16) at com.icesoft.faces.webapp.http.servlet.MultiViewServlet.service(MultiViewServlet.java:53) at com.icesoft.faces.webapp.http.servlet.PathDispatcher$Matcher.serviceOnMatch(PathDispatcher.java:52) at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:29) at com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet.service(MainSessionBoundServlet.java:97) at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:35) at com.icesoft.faces.webapp.http.servlet.PathDispatcher$Matcher.serviceOnMatch(PathDispatcher.java:52) at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:29) at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:85) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) This problem is blocking upgrade to 1.6.0 from 1.5.3
        Hide
        Mircea Toma added a comment -

        Serve files from the local filesystem.

        Show
        Mircea Toma added a comment - Serve files from the local filesystem.
        Hide
        dukehoops added a comment -

        Mircea,

        I'm not clear on your comment - could you please expand on it? Should the following now work and not cause exceptions?

                        <ice:outputLink value="#{facesContext.externalContext.requestContextPath}/go/creds">
                            <img src="../assets/img/home3/membertools.jpg"/>
                        </ice:outputLink> 
        
        Show
        dukehoops added a comment - Mircea, I'm not clear on your comment - could you please expand on it? Should the following now work and not cause exceptions? <ice:outputLink value= "#{facesContext.externalContext.requestContextPath}/go/creds" > <img src= "../assets/img/home3/membertools.jpg" /> </ice:outputLink>
        Hide
        dukehoops added a comment -

        Correction, above code should be:

        <img src="/assets/img/home3/membertools.jpg"/>

        Show
        dukehoops added a comment - Correction, above code should be: <img src="/assets/img/home3/membertools.jpg"/>
        Hide
        Jim Zhang added a comment -

        the image path won't be calculated correctly if you use "img" tag. Please try ice:graphicImage instead of img.

        e.g.
        <ice:graphicImage url="/assets/img/home3/membertools.jpg">

        You could either use absolute path or relative path in graphicImage in this case.

        Show
        Jim Zhang added a comment - the image path won't be calculated correctly if you use "img" tag. Please try ice:graphicImage instead of img. e.g. <ice:graphicImage url="/assets/img/home3/membertools.jpg"> You could either use absolute path or relative path in graphicImage in this case.

          People

          • Assignee:
            Unassigned
            Reporter:
            Philip Breau
          • Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: