JSF работает в Firefox, но пустая страница в Internet Explorer

#internet-explorer #jsf-2

#internet-explorer #jsf-2

Вопрос:

У меня есть файл login.xhtml, который отлично отображается в Firefox, однако, когда я открываю ту же страницу в Internet Explorer, я получаю пустую страницу только с цветом фона, заданным файлом CSS. Я пробовал IE8 и IE10. У меня не было проблем с отображением кода JSF в IE ни в одном из моих других проектов JSF, ожидающих этого. Опять же, программа отлично работает в Firefox. Любые предложения о том, как это решить?

Вот мой файл login.xhtml:

 <!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:p="http://primefaces.org/ui">
<h:head>
    <f:facet name="first">
        <meta http-equiv="X-UA-Compatible" content="IE=8" />
    </f:facet>
    <f:facet name="last">   
        <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
        <link type="text/css" rel="stylesheet" href="#{request.contextPath}/css/global.css" />
        <title>Annual Review</title>
    </f:facet>      
</h:head>

<h:body>
<p:layout fullpage="true" >

<p:layoutUnit position="north" size="80" minSize="80" maxSize="80">                 
    <p:panelGrid styleClass="menuBarGrid" columns="2">
        <p:graphicImage url="/css/NeedhamLogo2.bmp" />              
        <h:outputText value="Annual Compliance Questionnaire" />                    
    </p:panelGrid>
</p:layoutUnit>

</p:layout>
</h:body>

</html>
  

И мой web.xml файл:

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>AnnualReview</display-name>
  <welcome-file-list>
    <welcome-file>login.xhtml</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
  </servlet-mapping>
  <context-param>
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
  </context-param>
  <context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>resources.application</param-value>
  </context-param>
  <listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
  </listener>
   <resource-ref>
        <res-ref-name>jdbc/annual_review</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
</web-app>
  

Я использую JSF 2.2, Primefaces 4.0 и Glassfish 4.

Ответ №1:

Я изменил <servlet-mapping><url-pattern> в своем web.xml файл from *.xhtml to /faces/* , и страница теперь отображается в IE.

Ответ №2:

Почему бы вам не использовать «outputStylesheet» вместо «link»! Я действительно считаю, что вообще не стоит отказываться от компонентов JSF. Если у вас есть папка css в папке ресурсов, вы должны попробовать это:

 <h:outputStylesheet name="global.css" library="css" />
  

Вам также лучше изменить свой p: graphicImage. Используйте эти два свойства вместо чистого URL. Я имею в виду «имя» и «библиотека».

Ответ №3:

Кажется, это происходит потому, что .ui-layout-unit имеет видимость = скрытый.

Переопределите .ui-layout-unit в вашем css как:

 .ui-layout-unit{
    overflow-x:visible !important; 
    overflow-y:visible !important;
  

}