問題の修正が見つかりました。 ajax4jsf-1.1.0.jar を変更して修正しました
根本原因: IE-8 の場合、応答はまだ読み取られていませんが、Ajax オブジェクトから応答がフェッチされています。そのため、status==200 と readystate=4 を確認して、IE の修正を追加しました。
jar 内の \org\ajax4jsf\framework\ajax\scripts\AJAX.js の下にある AJAX.js を開きます
STEP 1. から変更:
getResponseText : function(){
return this._request.responseText;
}
に:
getResponseText : function(){
if (this._request.readyState == 4){
if (this._request.status == 200) {
return this._request.responseText;
}
}
}
ステップ 2. このメソッドを探して、FROM を変更します。
window.setTimeout(function() {
var isDocOpen=false;
//This functions has few more lines , I have not pasted all code here...
への変更:
//This is the Fix for IE....The isIE variable is pre defined inside the script.
if (isIE){
if (req.readyState == 4){
if (req.status == 200) {
window.document.open(req.getContentType(),true);
isDocOpen=true;
window.document.write(req.getResponseText());
window.document.close();
}
}
}
else {
//This is the Original code...
//Keep this for all other browsers...
window.document.open(req.getContentType(),true);
isDocOpen=true;
window.document.write(req.getResponseText());
window.document.close();
}
....... コードの残りの部分は、元のスクリプトのとおりです。
ステップ 3:
//COMMENT OUT THIS ORIGINAL CODE. Not sure why this reloading is done for IE
//this was causing IE to send requests...more than once..
//if(isIE){
/ For Ie , scripts on page not activated.
// window.location.reload(false);
//}
上記の変更を行った後、win rar を使用して Ajax.js ファイルを ajax4jsf-1.1.0.jar に戻し、IE 8 の問題が解決されました。
それが誰かを助けることを願っています。