サブミット・タイプの AJAX 要求は、EGL 制御の Web ページ上にあるボタンをユーザーがクリックしたときに発生するアクションと、同様の働きをします。つまり、制御が JSF ハンドラーに渡され、JSF ハンドラー内のすべての変数が、JSF コントロールの値と一致するように更新されます。更新要求とは異なり、JSF ハンドラー内のすべての変数がコントロールの現行値によって更新されるため、パラメーターを渡す必要はありません。ただし、更新要求と同様、更新されるのは 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>
この動作は、次の例のようになります。

「プロパティー」ビューが、次の例のようになります。

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