明確にするために追加情報で編集
アプリケーションを JBoss 5 から Tomee 7.0.1+ に移行しています。Tomee では MyFaces 2.2.10 と RichFaces 4.2.0 を使用しています (Jboss では MyFaces の代わりに Mojarra JSF を使用しました)。
f:ajax リスナーがラジオ ボタン リストの値の変更でトリガーされないという問題があります。コードは次のとおりです。
<h:selectOneRadio value="#{managedBean.paramsType}"
layout="pageDirection">
<f:selectItem itemValue="Item1" itemLabel="Item1" />
<f:selectItem itemValue="Item2" itemLabel="Item2" />
<f:ajax render="@form" execute="@form" listener="#{managedBean.checkSelection}" />
</h:selectOneRadio>
<h:selectManyCheckbox value="#{managedBean.objectList}" layout="pageDirection">
<f:selectItem itemValue="checkOption1" itemLabel="Option1" itemDisabled="#{managedBean.paramsType == 'Item3'}"/>
<f:selectItem itemValue="checkOption2" itemLabel="Option2" itemDisabled="#{managedBean.paramsType == 'Item1'}"/>
<f:selectItem itemValue="checkOption3" itemLabel="Option3" itemDisabled="#{managedBean.paramsType == 'Item2'}"/>
</h:selectManyCheckbox>
マネージド Bean では、checkSelection メソッドに次のシグネチャがあります。
public void checkSelection()
{
//update objectList (select or deselect items) based on radio button selection
}
チェック選択は、TomEE でアプリを実行するときに呼び出されることはありませんが、JBoss (同一コード) でも同じように機能します。
TomEE では、checkSelection メソッドの入力パラメーターとして AjaxBehaviorEvent を追加しようとしましたが、このパラメーターの有無にかかわらずメソッドが呼び出されることはありません。f:ajax のリスナー属性が何らかの理由でイベントを処理していないようです。
ブラウザ コンソール、アプリケーション ログ、またはサーバー ログにエラーは報告されません。メソッドが呼び出されることはありません。また、h:messages はエラーを表示しません。
また、a4j:ajax と valueChangeListener で試しました。a4j:ajax は f:ajax と同じように動作します - マネージド Bean で定義されたメソッドは呼び出されません。valueChangeListener は、f:ajax リスナーとは異なるイベントによってトリガーされ、同じフォームの ah:selectManyCheckbox コンポーネントの選択に影響を与えるためにラジオ ボタンの選択を変更する必要があるため、機能しません。