IE9 + RichFaces Рендеринг проблема - PullRequest
3 голосов
/ 12 мая 2011

У меня есть веб-приложение, которое работает на JSF 2.0 + Richfaces 3.3.3.Отлично смотрится во всех браузерах, кроме IE9.

В IE9 без режима совместимости (с, без проблем) это выглядит примерно так (игнорируйте затемненный текст): enter image description here

Обратите внимание, как всекомпоненты обрамлены, а CSS игнорируется (не видно?)

JSP выглядит следующим образом (только релевантные материалы):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<link rel="stylesheet" href="css/pageStyle.css" type="text/css" >
</head>

<body>
...
</body>

CSS находится по адресу C:\apache\tomcat\webapps\MyWebApp\css\pageStyle.css

Кто-нибудь есть идеи?Спасибо!

ОБНОВЛЕНИЕ Провел некоторые исследования с «инструментами разработчика», захватив пакеты с вкладкой network.Файл CSS отправляется с Type = text/html вместо text/css.Я думаю, что это проблема согласно этому вопросу.

Но я все еще не знаю, почему это происходит.Как видите, тип файла четко помечен как type="text/css в теге <link>.

Еще одно интересное наблюдение - проверка того же объекта в Chrome Developer Tools,тип text/css, так что, возможно, это ошибка IE9.Я в замешательстве ...

Ответы [ 3 ]

3 голосов
/ 07 сентября 2011

RichFaces 3.x не поддерживает IE9 (и нет планов по его внедрению), обратитесь к этой теме: http://community.jboss.org/thread/156720

Вы можете обновить до RF 4,

илиреализовать фильтр, чтобы заставить IE9 работать в режиме совместимости:

public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
    HttpServletResponse resp = (HttpServletResponse) response;
    resp.addHeader("X-UA-Compatible", "IE=EmulateIE8");
    chain.doFilter(request, resp);
}
2 голосов
/ 06 сентября 2011

Проблема в том, что IE9 требует, чтобы в ответе http для файла css был определен заголовок Content-Type.Заголовки ваших ответов http должны выглядеть следующим образом:

Content-Type: text/css

Возможное решение: вы можете создать Servlet, который захватывает запросы http и украшает заголовки ответов значениями Content-Type.

2 голосов
/ 12 мая 2011

Richfaces 3.3 предшествует выходу IE9 из бета-версии, поэтому, вероятно, будут некоторые проблемы с совместимостью, поскольку сборка, вероятно, не была протестирована по сравнению с IE9.

Хорошей новостью является то, что вы используете JSF 2, поэтому нет причин, по которым вы не можете перейти на Richfaces 4 Final, который определенно поддерживает IE9.

То, что версия JSF, которую вы используете, кажется, также важно. Я использую mojarra, и в версии 2.0.4 у меня были проблемы со многими компонентами Richfaces, когда они были перезагружены с mojarra.ab (f: ajax). Обновление до 2.1.1, похоже, решило все эти проблемы, и теперь у меня есть рабочий код Richfaces, который хорошо работает для пользователей IE9.

Я бы порекомендовал вам взглянуть на путь обновления и посмотреть, является ли он жизнеспособным.

...