私はSun JSF 2.0を使用しており、javax.faces.event.PhaseListener
を拡張したフェーズリスナーを作成しています。私は、ソースURI、ターゲットURI、合計時間などを記録することができます。しかし、これまでManagedBeanと、そのクライアントイベント中に呼び出される対応するメソッドを記録することができませんでした。これどうやってするの?呼び出されたマネージドBeanアクションをPhaseListenerに記録する
3
A
答えて
11
入力コンポーネントは、同期要求の場合は要求パラメータ名として、非同期(ajax)要求の場合は要求パラメータ値javax.faces.source
要求パラメータとしてクライアントIDを送信します。リクエストパラメータをループし、この情報に基づいてによってUICommand
コンパニオンが解決可能かどうかを確認し、それに応じて処理してください。
キックオフ例:日は一年以上前に、Oracleによって引き継がれている
@Override
public void beforePhase(PhaseEvent event) {
FacesContext context = event.getFacesContext();
if (context.isPostback()) {
UICommand component = findInvokedCommandComponent(context);
if (component != null) {
String methodExpression = component.getActionExpression().getExpressionString();
// It'll contain #{bean.action}.
}
}
}
private UICommand findInvokedCommandComponent(FacesContext context) {
UIViewRoot view = context.getViewRoot();
Map<String, String> params = context.getExternalContext().getRequestParameterMap();
if (context.getPartialViewContext().isAjaxRequest()) {
return (UICommand) view.findComponent(params.get("javax.faces.source"));
} else {
for (String clientId : params.keySet()) {
UIComponent component = view.findComponent(clientId);
if (component instanceof UICommand) {
return (UICommand) component;
}
}
}
return null;
}
+0
それは働いた...ありがとう – Hussain
関連する問題
- 1. commandButtonはマネージドBeanのアクションを呼び出さない
- 2. マネージドBeanメソッドを呼び出すと、NPE
- 3. マネージドBeanコンストラクタはいつ呼び出されますか?
- 4. ページのロード時にマネージドBeanメソッドを呼び出す
- 5. ASP.NET MVC:他のアクションによって呼び出されるアクション
- 6. アクションが呼び出されたことをアサートする方法
- 7. JSFマネージドBeanをCDIマネージドBeanに移行する
- 8. jsfマネージドBeanメソッド(AjaxBehaviorEventリスナーハンドラ)を呼び出すためにjquery ajaxを使用する
- 9. WindowsのプログラムのDeviceIoControl呼び出しを記録する方法
- 10. backBarButtonItemはアクションを呼び出さない
- 11. JSFのマネージドbean
- 12. フォームで呼び出されないアクションを作成する
- 13. アクションが2回呼び出されました
- 14. セレンを使ったアクションの記録
- 15. .NETで呼び出されたクラスメソッドと引数の名前を記録する方法は?
- 16. @PredestroyはプロトタイプスコープのBeanでいつ呼び出されますか?
- 17. ajaxアクションによって呼び出されたURLを見つける
- 18. アクションが呼び出されない - フラックスが反応する
- 19. コンソールにすべての関数呼び出しを記録する
- 20. すべてのメソッド呼び出しをRailsアプリケーションに記録する
- 21. Tkinterでボタンがクリックされたときにアクションを呼び出す方法
- 22. 呼び出された(ディスパッチャを介して)呼び出し、または直接呼び出された呼び出しを同期する
- 23. マネージドBeanの置換
- 24. JSFマネージドBeanコードアシストEclipse
- 25. Zend Frameworkのアクションが2回呼び出される
- 26. MVCコントローラのアクションが2回呼び出される
- 27. UIBarButtonItemをタップしたときにアクションが呼び出されない
- 28. 条件付きレンダリングされたコマンドリンクはアクションを呼び出さない
- 29. メソッドの呼び出し元をトラッキングする[呼び出しによって呼び出された]
- 30. セッションを取得したマネージドBeanを同期させる
注意。 – BalusC