更新 タイプの AJAX 要求は、ページの指定エリア内にあるコントロールの値を更新するよう、サーブレットに促します。ただし、この更新要求では、ページ上のコントロールと一致させるための、JSF ハンドラー内にある変数の更新が行われません。このタイプの要求は、以上のような方法によって、モジュール化と効率化を実現しています。
このタイプの要求では、更新対象となるページのエリア、要求を起動するイベントを指定します。また、要求と一緒に渡されるパラメーターも、オプションで指定できます。次に、ページの指定部分が更新されるように、JSF ハンドラーの onPreRenderFunction を構成します。
EGL の AJAX 要求では、JSF パネル・コントロール内のページ部分のみを更新することができます。JSF パネル・コントロールは、他の JSF コントロールのコンテナーおよびオーガナイザーとして、主に機能します。「パレット」ビューの「拡張 Faces コンポーネント」ドロワーにある「パネル - グループ・ボックス」コントロールは、使い勝手のよいコントロールです。単なるコンテナーとして機能し、ページ上には表示されません。
<h:panelGrid id="updatablePanel" styleclass="panelGrid">
<h:outputText id="textToUpdate" value="#{myPage.message}"
binding="#{myPage.message_Ref}" styleClass="outputText" />
</h:panelGrid>
そのためには、JSF 動作をページ上の入力コントロールに追加してから、要求を起動するイベントを選択します。この動作が組み込まれているコントロールは、パネル・コントロール内に配置する必要はありませんが、要求を起動できるのは入力コントロールのみです。
例えば、ユーザーが特定のコントロールにフォーカスを移動させたときに、AJAX 要求が発生するようにすることができます。その場合には、onFocus イベントを使用します。ユーザーが特定のコントロールからフォーカスを移動させたときに、要求が実行されるようにするには、onBlur イベントを使用します。その他のよく使用されるイベントとしては、onClick、onMouseOver、onSelect などがあります。
<h:inputText id="nameText" value="#{myPage.name}"
binding="#{myPage.name_Ref}" styleClass="inputText" >
<hx:behavior event="onblur" id="behavior1"
behaviorAction="get" targetAction="updatablePanel">
</hx:behavior>
</h:inputText>
この動作は、次の例のようになります。

「ブラウザーから送信されたパラメーター値」というラベルが付いている表内のパラメーターは、ページ上の入力コントロールの値を参照します。例えば、ページ上の入力コントロールの現行値をパラメーターとして渡す場合は、その入力コントロールの ID をここで追加します。
「サーバーで計算されたパラメーター値」というラベルが付いている表内のパラメーターは、ここで入力するリテラル値または JSF ハンドラー内にある変数の値の、いずれかを参照します。
<hx:ajaxRefreshRequest id="ajaxRefreshRequest1"
target="updatablePanel" params="nameText">
</hx:ajaxRefreshRequest>
エディターでの AJAX 要求は、次の例のようになります。

AJAX 要求の実行時だけでなく、ページの初回ロード時にも onPreRenderFunction が実行されるため、この関数がどのような操作の結果として実行されることになったかを確認することをお勧めします。 そのためには、パラメーター $$ajaxmode の値をテストします。通常のページ・ロード操作の結果として関数が実行されている場合、このパラメーターは NULL になります。一方、AJAX 要求の結果として関数が実行されている場合、このパラメーターには値が含まれます。
function onPreRender()
if (J2EELib.getQueryParameter("$$ajaxmode") == NULL)
//このページは、初めてロードされました。
//ページのロード操作を、ここで行ってください。
else
//AJAX 要求の結果、このページがロードされました。
//AJAX の更新操作を、ここで行ってください。
end
end
outputText = "Hello "::J2EELib.GetQueryParameter("nameText")::"!";
AJAX 更新要求の例については、AJAX 要求による Web ページの部分的な更新を参照してください。