4

Glassfish 2.1 で JSF 2.0 と RichFaces 3.3.3 を使用しています。私のコンピューター (ローカル サーバー) でうまく動作するモーダル パネルを備えた Web アプリケーションを作成しました。特定の RichFaces バージョンの IE9 非互換性のためX-UA-Compatible: IE=8、HTML ヘッドでメタ タグを使用しています。

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

ローカル環境にデプロイすると、モーダル パネルは次のようになります。

1OK

しかし、本番サーバーにデプロイすると、問題が発生します。

互換ビュー (ソース: Geneanet.org ) で IE を使用すると、モーダル パネルは次のようになります。コンプ

2いいえ

互換性ビューを使用しない場合、モーダル パネルは表示されますが、すべての ajax ボタンが機能しません。

これはどのように発生し、どうすれば解決できますか?

4

1 に答える 1

7

IE 開発者向けドキュメントから、Defining Document Compatibility :

...

X-UA-Compatibleヘッダーは大文字と小文字を区別しません。ただし、タイトル要素とその他のメタ要素を除く他のすべての要素の前に、ウェブページのヘッダー (HEAD セクション) に表示する必要があります。

...

RichFaces 3.3.3 は、デフォルトで、<link>RichFaces 固有の CSS スタイルシートを参照する要素を、元のテンプレート コンテンツのの頭の一番上に自動的に含めます。したがって、 HTML要素のフレーバーのヘッダーは、RichFaces 3.3.3 Web アプリケーションでは常に機能しません。ローカルの開発環境で正常に動作するのは、ブラウザー構成で IE8 互換サイトのリストに localhost サイトを追加したためである可能性が最も高いです。ヘッダーの存在はもはや重要ではありません。<head>X-UA-Compatible<meta>X-UA-Compatible

最善の策は、X-UA-Compatibleヘッダーを HTML メタ タグとしてではなく、HTTP 応答自体に直接設定することです。マップされ、次のジョブを実行する単純なサーブレット フィルターを使用してこれを行うことができます。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);
}
于 2012-09-12T15:45:17.603 に答える