jakaruta.doc_014
最終投稿日:2026年07月19日
<h:commandButton id="my_btn1" type="button" value="押す" styleClass="parts_button" onclick="my_alert()" />
<h:commandButton id="my_btn2" value="押す" action="#{sampleBean.submit()}" />
<h:commandButton id="my_btn3" value="AJAX" actionListener="#{sampleBean.submit()}">
<f:ajax execute="file" render="inpText" />
</h:commandButton>
<div id="loadingMessage" style="display: none;">処理中...</div>
<h:commandButton id="my_btn4" value="AJAX" actionListener="#{sampleBean.submit()}">
<f:ajax execute="@this" render="@all" onevent="handleAjaxEvent" onerror="handleAjaxError" />
</h:commandButton>
<h:selectOneMenu id="my_pref" value="#{sampleBean.name}" styleClass="parts_combo" onchange="my_alert()">
<f:selectItem itemValue="" itemLabel="-- 都道府県選択 --" noSelectionOption="true" />
<f:selectItem itemValue="1" itemLabel="東京都" />
<f:selectItem itemValue="2" itemLabel="埼玉県" />
<f:selectItem itemValue="3" itemLabel="神奈川県" />
<f:selectItem itemValue="4" itemLabel="千葉県" />
</h:selectOneMenu>
<h:inputTextarea id="area" value="#{sampleBean.name}" styleClass="parts_text" style="width: 300px; height: 150px; resize: none;" />
<BR />
<h:selectOneMenu id="my_pref2" value="#{sampleBean.name}" styleClass="parts_combo" >
<f:ajax execute="@this" render="area" />
<f:selectItem itemValue="" itemLabel="-- 都道府県選択 --" noSelectionOption="true" />
<f:selectItem itemValue="1" itemLabel="東京都" />
<f:selectItem itemValue="2" itemLabel="埼玉県" />
<f:selectItem itemValue="3" itemLabel="神奈川県" />
<f:selectItem itemValue="4" itemLabel="千葉県" />
</h:selectOneMenu>
<h:inputTextarea id="area" value="#{sampleBean.name}" styleClass="parts_text" style="width: 300px; height: 150px; resize: none;" />
<BR />
<div id="loadingMessage" style="display: none;">処理中...</div>
<h:selectOneMenu id="my_pref3" value="#{sampleBean.name}" styleClass="parts_combo" >
<f:ajax execute="@this" render="area" onevent="handleAjaxEvent" onerror="handleAjaxError" />
<f:selectItem itemValue="" itemLabel="-- 都道府県選択 --" noSelectionOption="true" />
<f:selectItem itemValue="1" itemLabel="東京都" />
<f:selectItem itemValue="2" itemLabel="埼玉県" />
<f:selectItem itemValue="3" itemLabel="神奈川県" />
<f:selectItem itemValue="4" itemLabel="千葉県" />
</h:selectOneMenu>
AJAXの処理をJavaScriptを交えて処理できます。
テキストエリアの内容を空にした状態で、プルダウンの任意の値を選択します。
するとテキストエリアに処理の内容が表示されます。
<h:inputTextarea id="area" value="#{sampleBean.name}" styleClass="parts_text" style="width: 300px; height: 150px; resize: none;" />
<BR />
<div id="loadingMessage" style="display: none;">処理中...</div>
<h:selectOneMenu id="my_pref4" value="#{sampleBean.name}" styleClass="parts_combo" onchange="js_ctrl(this)">
<f:selectItem itemValue="" itemLabel="-- 都道府県選択 --" noSelectionOption="true" />
<f:selectItem itemValue="1" itemLabel="東京都" />
<f:selectItem itemValue="2" itemLabel="埼玉県" />
<f:selectItem itemValue="3" itemLabel="神奈川県" />
<f:selectItem itemValue="4" itemLabel="千葉県" />
</h:selectOneMenu>
<h:commandButton id="my_pref4_hidden" tabindex="-1" style="display:none;">
<f:ajax execute="my_pref4" render="area" onevent="handleAjaxEvent" onerror="handleAjaxError" />
</h:commandButton>
<script>
function js_ctrl(element) {
if (element.value === "") {
alert("スキップします。");
return;
}
// AJAX実行
document.getElementById("my_pref4_hidden").click();
}
</script>
プルダウンを選択したらAJAXが発火します。
プルダウンが選択されたら、JavaScript『js_ctrl』が発火します。
隠しボタンである『h:commandButton』をJS制御で押下する事で「サンプル③」と同様にAJAXが発火します。
こちらの方が、例えばJSで『Yes/No』ダイアログを表示して『Yes』のみAJAXを発火させるなど自由度が上がります。
※[No]の場合はプルダウンの値を戻す処理も必要となりそうですが..
<h:commandButton actionListener="#{sampleBean.submit()}" >
<f:ajax execute="pref" render="jyusyo" />
<f:resetValues render="jyusyo" />
</h:commandButton>
① ID属性名 そのエレメントのみをサーバへ送信します(半角スペース区切りで複数指定可)
② @this 自身のみをサーバで送信します。ただJAVA側を発火させたい場合、自身だけをチェックしたい場合等
③ @form <form> ~ </form>の内容を全てサーバへ送信します。DB登録処理等で使用します。
④ @all 画面全体をサーバへ送信します。これを指定するくらいならAJAXを使用する必要ないです。