IE9 + RichFaces渲染问题

时间:2011-05-12 13:04:24

标签: css jsf richfaces internet-explorer-9

我有一个在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选项卡捕获数据包,对“开发人员工具”进行了一些研究。 使用Type = text/html而不是text/css发送css文件。根据{{​​3}}问题,我想这就是问题所在。

但我仍然不知道为什么会这样。如您所见,文件类型在type="text/css标记中明确标记为<link>

另一个有趣的观察 - 在Chrome开发者工具中检查相同的对象,内容类型是text/css,所以也许它是一个IE9错误。我很困惑......

3 个答案:

答案 0 :(得分:3)

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);
}

答案 1 :(得分:2)

Richfaces 3.3早于IE9进入测试阶段,因此可能存在一些兼容性问题,因为构建可能没有针对IE9进行测试。

好消息是你正在使用JSF 2,所以没有理由你不能升级到Richfaces 4 Final,它肯定支持IE9。

据说你使用的JSF版本似乎也很重要。我正在使用mojarra,在版本2.0.4中,当我们使用mojarra.ab(f:ajax)重新加载时,我遇到了许多Richfaces组件的问题。升级到2.1.1似乎已经解决了所有这些问题,现在我的Richfaces代码在生产中对IE9用户表现良好。

我建议您查看升级路径,看看它是否可行。

答案 2 :(得分:2)

问题是IE9需要css文件的http响应定义了Content-Type标头。 您的http响应标头应如下所示:

Content-Type: text/css

可能的解决方案:您可以创建一个Servlet来捕获http请求并使用Content-Type值修饰响应标头。