2013-11-23 3 views
0

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

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

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: 

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

IFrame состоит из панели меню с некоторыми элементами меню.

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

мой IFrame ЦСИ ниже тег

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

Почему этот путь предваряя происходит в ГНЦ IFRAME?

ответ

0

Это потому, что ваш <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

Пока еще asusming что /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-адреса запроса.

+0

благодаря BalusC, , но я получил решение, поставив этот путь