JSF 2.0 と JPA 2.0 の利点を得るために、主なアプリケーションを Seam 2.2 から Seam 2.3beta1 に移行中です。おおむね順調に進んでいます。ただし、JSF 2.0 および Richfaces 4.x での Ajax の変更の一部は、コードの移植に問題があることが判明しています。
他のコンテンツに基づいて設定された一連のコンポーネントがあります。たとえば、最初のメニューはアイテム カテゴリを選択します。値が選択されると、そのカテゴリのサブカテゴリがデータベースから取得され、2 番目のメニューの選択項目として機能します。このプロセス全体が会話範囲です。現在、コードは次のようになっています。
<h:selectOneMenu value="#{newObjAction.category}"
required="true"
requiredMessage="You must select a category"
style="width:300px;">
<s:selectItems var="cat"
value="#{newDesignAction.designCategories}" label="#{cat.name}"
noSelectionLabel="Select a category..."
hideNoSelectionLabel="true" />
<s:convertEntity />
<a:support event="onchange" reRender="subCategoryPanel"
limitToList="true" ajaxSingle="true" status="subCategoryStatus" />
</h:selectOneMenu>
これは Seam 2.2 と JSF 1.2 で問題なく動作します。ただし、JSF 2.0 から削除されました。私はその代わりにこのようなものを試しました:
<f:ajax listener="#{newObjAction.handleCategoryChange}">
期待どおりにイベントを発生させますが、大きな問題が 1 つあります。それは、会話を伝播していないことです。その結果、リスナー オブジェクトが呼び出される直前に傍受され、ユーザーは定義済みのno-conversation-view-id
fromにリダイレクトされpages.xml
ます。使用時に会話を伝播する方法はあります<f:ajax />
か? これを達成するためのより良い方法はありますか?これはアプリケーションの主要なコンポーネントであるため、この時点で移行全体は停止しています。
助けやアドバイスをいただければ幸いです。