当前位置 : 主页 > 手机开发 > 无线 >

jsf-2 – 在RichFaces webapp中被忽略

来源:互联网 收集:自由互联 发布时间:2021-06-10
我在Glassfish 2.1上使用JSF 2.0和RichFaces 3.3.3.我已经创建了一个带有模式面板的Web应用程序,该面板在我的计算机(本地服务器)中运行良好.由于特定RichFaces版本的IE9不兼容,我在我的 HTML头中使
我在Glassfish 2.1上使用JSF 2.0和RichFaces 3.3.3.我已经创建了一个带有模式面板的Web应用程序,该面板在我的计算机(本地服务器)中运行良好.由于特定RichFaces版本的IE9不兼容,我在我的 HTML头中使用了X-UA-Compatible:IE = 8元标记:

<meta http-equiv="X-UA-Compatible" content="IE=8" />

当我在本地环境中部署时,模态面板看起来像这样:

但是当我在生产服务器中部署时,我遇到了问题.

如果我使用IE兼容性视图
comp http://bloges.geneanet.org/public/Blog%20EN/EN-ie8-03.png,我的模态面板看起来像这样:

如果我不使用兼容性视图,我会看到模态面板,但我的所有ajax按钮都不起作用.

这是怎么造成的,我该如何解决?

来自IE开发人员文档, Defining Document Compatibility:

The X-UA-Compatible header is not case sensitive; however, it must appear in the header of the webpage (the HEAD section) before all other elements except for the title element and other meta elements.

RichFaces 3.3.3默认情况下自动包含< link>元素引用RichFaces特定的CSS样式表,位于原始< head>之前的头顶部.模板内容.因此,HTML< meta>风格的X-UA兼容标题元素总是无法在RichFaces 3.3.3 webapp中工作.它在本地开发环境中正常工作很可能是因为您已在浏览器配置中将localhost站点添加到IE8兼容站点列表中. X-UA-Compatible标头的存在不再重要.

最好的办法是直接在HTTP响应本身而不是HTML元标记上设置X-UA-Compatible标头.您可以使用一个简单的servlet filter来映射到FacesServlet并完成以下工作:

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    ((HttpServletResponse) response).setHeader("X-UA-Compatible", "IE=8");
    chain.doFilter(request, response);
}
网友评论