私は非常に興味深い問題に遭遇しました。これが私のシナリオです:
私の目標
- ネストされたツールチップでSelectManyCheckboxを使用します。
- SelectManyCheckbox onHideイベントを使用して、Ajax(ActionListener)呼び出しを起動し、
- SelectManyCheckboxラベルとネストされたツールチップテキスト。
私のアプローチ
- remoteCommandを使用して、SelectManyCheckboxonHideイベントに関連付けます
XHTML
<p:selectCheckboxMenu id="sourceFilter"
onHide="sourceFilterCommand();"
value="#{viewRevenueBean.sourceSelectManyMenu.selectedValues}"
label="#{viewRevenueBean.sourceSelectManyMenu.label}"
filter="true" filterMatchMode="contains"
validator="#{viewRevenueBean.sourceSelectManyMenu.validate}"
widgetVar="srcFilterDropDown">
<f:selectItems id="sourceItems"
value="#{viewRevenueBean.sourceSelectManyMenu.availableItems}"
var="source" itemLabel="#{source.label}" itemValue="#{source.value}" />
<f:convertNumber type="number" />
<p:tooltip id="srcToolTip"
for="sourceFilter"
value="#{viewRevenueBean.sourceSelectManyMenu.tooltipText}"
showEffect="fade"
hideEffect="fade"/>
<p:remoteCommand name="sourceFilterCommand" update="sourceFilter"
actionListener=#{viewRevenueBean.sourceSelectManyMenu.defaultEventHandler}"/>
</p:selectCheckboxMenu>
私の結果
- Ajax(アクションリスナー)が起動され、SelectManyCheckboxラベルとネストされたツールチップが更新されます(予期される動作)。
- Firebugで、各onHideイベントのAjax呼び出しが、先行するサーバー側の要求の数に2を掛けていることに気付きました(予期しない動作)。
例えば
1st onHide event = 1 Request
2nd onHide event = 2 Requests
3rd onHide event = 4 Requests
4th onHide event = 8 Requests
5th onHide event = 16 Requests
等.....
これは明らかに望ましくなく、2回のonHideイベントの後で大幅に遅くなります。
私が試した実験
目的のAjax呼び出しを実行し、要素の更新を修正するap:commandボタンを作成しました(乗算された要求の問題なしで)。次に、Firebugを介してAjax JavaScript呼び出しを盗み、それを自分のJavaScript関数に配置し、それをonHideコールバックとして使用しました。繰り返しますが、同じ望ましくない結果が発生し、ラベルとツールチップは更新されますが、リクエストは増え始めます。
remoteCommandを別の場所(メニューの外側、独自のフォームの内側など)に配置してみました。違いはありません。問題はまだ発生しています。
SelectManyCheckboxシナリオを単純化して(ツールチップ、カバーターを削除し、さまざまな属性を微調整するなど)、他の可能性を排除してみました。変わりはない。
onchangeを使用してp:remoteCommandの代わりにap:ajaxを試しました。Ajaxリクエストは正常に機能しますが、明らかに私が求めているものではありません。onHideでトリガーする必要があります。
SelectCheckboxMenuの代わりに、onchangeでSelectManyCheckbox(ラベルなし)を使用し、他のすべてを同じに保ってみました。remoteCommandは正常に機能し、Ajax呼び出しは一度呼び出され、すべてが素晴らしくてダンディです。[/ list] [list] *PrimeFaces3.5-SNAPSHOTも試してみました。変わりはない。問題はまだ現れています。
この問題に関して、これまでのところフォーラムやネット上で手がかりは見つかりませんでした。これはバグやプログラマーの不器用さのように聞こえますか:roll :?もちろん、洞察や提案は大歓迎です。