0

明確にするために追加情報で編集

アプリケーションを 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 コンポーネントの選択に影響を与えるためにラジオ ボタンの選択を変更する必要があるため、機能しません。

4

1 に答える 1