2

タブレットPCで使用するためにjsf-1.2アプリケーションの変更に取り組んでいます。

そのために、ユーザーがテーブル内のリンクをクリックするのではなく、テーブルの行をクリックして行の内容の詳細ビューを開くことができるようにしました(デスクトップバージョンの場合)。

これまでのところ正常に動作します。ただし、各行には、異なるリンクを開く2つのリッチボタンを含めることができます。

そのリンクの内容は、本来のように新しいタブで開かれます。私の問題は、rowclickのアクションイベントが元のタブでもアクティブになっていることです。これは意図した動作ではありません。

私が今やりたいのは、行のボタンの1つがクリックされた場合にイベントを停止することです。

私はすでに、ボタンのイベントがrowclickイベントの前に発生することを知っています。この時点でイベントチェーンを切断する方法はありますか?

4

2 に答える 2

3

これは、イベント バブリングが原因で発生します。以下のように使用Event.stop(event);してみてくださいcommandButton

<a4j:commandButton onclick="Event.stop(event);" action="#{myBean.myMethod())}" value="Show" />
于 2012-12-11T04:23:42.837 に答える
0

チェーンを壊すことができるかどうかはわかりませんが、可能であっても(おそらく例外をスローすることによって)、やめることをお勧めします。

イベント ドリブン環境でこれを行う適切な (悲しいことに) 方法は、ボタンのハンドラーが起動したときにbooleanインジケーターをtrueに設定し 、ハンドラーがジョブを終了したときにfalseに戻すことです。イベントのハンドラーでは、がtruerow-clickedかどうかを確認する必要があります( falseの場合のみ) 。イベント の処理を続行します。booleanrow-clicked

ブール値の推奨される名前:isRowButtownClicked

免責事項:この回答は C# の知識に基づいています。Java での GUI 開発の経験はなく、特に JSF での経験はありません。

于 2012-12-10T20:39:00.607 に答える