FacesFileNotFoundException при использовании IFrame в XHTML

Я получаю com.sun.faces.context.FacesFileNotFoundException при использовании меню IFRAME во втором браузере.

Я получаю эту ошибку при входе в другой браузер.

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.
-

exception

com.sun.faces.context.FacesFileNotFoundException: /xhtml/auth/faces/xhtml/client/clientImage.xhtml Not Found in ExternalContext as a Resource
    com.sun.faces.facelets.impl.DefaultFaceletFactory.resolveURL(DefaultFaceletFactory.java:232)
    com.sun.faces.facelets.impl.DefaultFaceletFactory.resolveURL(DefaultFaceletFactory.java:273)
    com.sun.faces.facelets.impl.DefaultFaceletFactory.getMetadataFacelet(DefaultFaceletFactory.java:209)
    com.sun.faces.application.view.ViewMetadataImpl.createMetadataView(ViewMetadataImpl.java:114)
    com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:233)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116)
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
    com.beo.importexport.filter.AuthFilter.doFilter(AuthFilter.java:64)
    org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62)
note The full stack trace of the root cause is available in the JBoss Web/7.0.13.Final logs.

JBoss Web/7.0.13.Final:

Я использовал шаблон на одной XHTML-странице. Внутри этого шаблона используется IFrame.

iframe состоит из строки меню с некоторыми пунктами меню.

Моя проблема заключается в том, что при входе во второй веб-браузер сеанс изменяется, поэтому SRC в IFRAME ставит префикс старого пути к жесткому пути.

мой тег iframe src ниже

     <iframe name="contentframe"   id="contentframe"  
            width="100%" height="710px"  
    src="faces/xhtml/client/clientImage.xhtml" 
            scrolling="auto"   
           style="overflow: auto;" >
     </iframe>

Почему этот префикс пути происходит в SRC IFRAME?


person Titus Kurian    schedule 23.11.2013    source источник


Ответы (1)


Это потому, что ваш <iframe src> представляет собой относительный URL. Он не начинается ни со схемы (например, http://, https:// и т. д.), ни с косой черты (/). Относительные URL-адреса интерпретируются относительно текущего URL-адреса запроса (тот, который вы видите в адресной строке браузера; примечание: и, следовательно, не относительно физического местоположения файла в дисковой файловой системе сервера, как ошибочно думают многие начинающие!).

Итак, если URL-адрес запроса (предполагается, что /faces - это путь к контексту; вам это не ясно, вы ничего не сказали ни о пути к контексту, ни о фактическом URL-адресе запроса, ни о сопоставлении JSF), например,

http://example.com/faces/xhtml/auth/login.xhtml

тогда относительный URL-адрес faces/xhtml/client/clientImage.xhtml будет искаться в той же папке, что и текущий URL-адрес запроса, в результате чего будет получен этот URL-адрес:

http://example.com/faces/xhtml/auth/faces/xhtml/client/clientImage.xhtml

Все еще предполагая, что /faces является контекстным путем, тогда это даст именно то исключение, которое вы получили:

com.sun.faces.context.FacesFileNotFoundException: /xhtml/auth/faces/xhtml/client/clientImage.xhtml Not Found in ExternalContext as a Resource

Вам также не ясно, по какому именно URL-адресу доступен файл iframe. Основываясь на информации, предоставленной до сих пор, мое лучшее предположение было бы

http://example.com/faces/xhtml/client/clientImage.xhtml

Если это действительно так, то вы действительно должны использовать

<iframe src="/faces/xhtml/client/clientImage.xhtml" />

Начальная косая черта / заставит интерпретироваться относительно корня домена, независимо от текущего URL-адреса запроса.

person BalusC    schedule 23.11.2013
comment
спасибо BalusC, но я получил решение, указав такой путь ‹iframe src=#{request.contextPath}/faces/xhtml/client/clientImage.xhtml /› - - person Titus Kurian; 25.11.2013
comment
@TitusKurian Привет. Я сталкиваюсь с аналогичной проблемой; Вы как-то определяете request в управляемом компоненте или это какое-то выражение EL? Пожалуйста, прокомментируйте? - person user390525; 07.10.2017