2011-05-12 100 views
3

我有一个运行在JSF 2.0 + Richfaces 3.3.3上的web应用程序。 除了IE9以外,所有浏览器都很棒。IE9 + RichFaces渲染问题

在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

任何人有任何想法? 谢谢!

UPDATE 通过与network标签捕获数据包做了一些研究与“开发者工具”。 该css文件与Type = text/html而不是text/css一起发送。我想这是根据this问题的问题。

但我仍然不知道为什么会发生这种情况。如您所见,<link>标签中的文件类型清晰标记为type="text/css

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

+0

浏览器(js控制台,开发人员工具)是否有任何错误? – 2011-05-12 13:24:44

+0

谢谢@Matt Handy。查看问题中的更新。 – Ben 2011-05-12 13:41:22

+0

你可以检查服务器上的.css文件的MIME类型吗?除非有人摆弄,否则我非常怀疑这是个问题。只是为了记录,链接标记应该是自闭的,因为您有xhtml文档类型(与元标记相同)。我也会试着去看看什么有效,什么不可以。像重新排序属性这样的东西,使类型出现在href属性之前。谁知道?什么事情都可能发生。这已经足够奇怪了。 – Matt 2011-05-12 14:07:20

回答

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

Richfaces 3.3早于IE9超出测试版,所以它可能会有一些兼容性问题,因为构建可能没有测试与IE9。

好消息是,您使用的是JSF 2,所以没有理由不能升级到绝对支持IE9的Richfaces 4 Final。

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

我会建议你看看升级路径,看看它是否可行。

+0

谢谢戴夫。尽管它不能直接解决我的问题,但知道这一点非常好:-) – Ben 2011-05-12 19:34:56

2

问题是,IE9需要http响应为css文件定义了Content-Type标头。 你的HTTP响应头应该出现这样的:

Content-Type: text/css 

可能的解决方法:您可以创建一个Servlet捕获HTTP请求和响应装饰用头值Content-Type