前回、画面エラー発生時のログ出力を整理しましたが、数秒毎に最新の状態にリフレッシュ表示する要件があり、Ajaxで実装してました。AjaxエラーのハンドリングはAjax側でハンドリングしなくてはなりません。
ネットで探してみたらOracleのサイトにjsf.ajax.addOnErrorというのが見つかりました。
https://docs.oracle.com/cd/E17802_01/j2ee/javaee/javaserverfaces/2.0/docs/js-api/symbols/jsf.ajax.html
JavaScriptのsetIntervalでフォームを5秒毎にリフレッシュさせているjsf.ajax.requestの箇所にエラーハンドリングを追加します。エラーが発生したらalertで問題発生をダイアログで表示させてますが、clearIntervalをしてもイベントが残っているみたいで、Alartのダイアログがしつこく出続けます。。仕方ないので1回だけ表示するように無理やり制御。
<script type="text/javascript">
var dispTimer1;
var errFlg;
errFlg = false;
var handleError = function handleError(data){
clearInterval(dispTimer1);
if ( errFlg == false){
errFlg = true;
alert("情報の読み込みに失敗しました");
location.reload();
}
}
$(document).ready(function(){
dispTimer1 = setInterval(function(){
jsf.ajax.addOnError(handleError);
jsf.ajax.request('mainform' , null,
{execute: 'mainform',render:"mainform"}
);
}, 5000);
});
</script>