JSFにインターセプタがあるかどうかを知りたいのですが(Springで使用するように)、実装する方法は?JSFのインターセプタ
8
A
答えて
10
これにはPhaseListener
を実装できます。オーバーライドされたgetPhaseId()
メソッドで指定するspecific JSF phaseでリッスンするようにプログラムすることができます。前後のイベントは、beforePhase()
とafterPhase()
の方法でインターセプトできます。
次の例では、応答のレンダリングフェーズでリッスン:
public class RequestInterceptor implements PhaseListener {
@Override
public PhaseId getPhaseId() {
return PhaseId.RENDER_RESPONSE;
}
@Override
public void beforePhase(PhaseEvent event) {
// Do your job here which should run before the render response phase.
}
@Override
public void afterPhase(PhaseEvent event) {
// Do your job here which should run after the render response phase.
}
}
あなたはfaces-config.xml
ファイルの<life-cycle>
セクションに<phase-listener>
としてそれを登録する必要があり、それを実行するために取得するには。あなたは複数の<phase-listener>
を持つことができます。
<lifecycle>
<phase-listener>com.example.RequestInterceptor</phase-listener>
</lifecycle>
あなたはフェーズリスナーは、(リクエストの種類に依存し、それらの必要はないすべてが常に実行されることに注意してください、)すべての単一のJSF相上で実行できるようにgetPhaseId()
でPhaseId.ANY_PHASE
を指定することができます。必要に応じて、前後のフェーズIDで現在のフェーズIDをPhaseEvent#getPhaseId()
で取得できます。
public class PhaseDebugger implements PhaseListener {
@Override
public PhaseId getPhaseId() {
return PhaseId.ANY_PHASE;
}
@Override
public void beforePhase(PhaseEvent event) {
System.out.println("Before phase " + event.getPhaseId());
}
@Override
public void afterPhase(PhaseEvent event) {
System.out.println("After phase " + event.getPhaseId());
}
}
また、あなたがよりグローバルフックをしたい場合Filter
は同様に良い動作するはずです(したがって、あなたはJSFのリクエスト/レスポンスでは正確に興味がないと、あなたはFacesContext
から何かを必要としません)。
@WebFilter("/*")
public class RequestInterceptor implements Filter {
@Override
public void init(FilterConfig config) {
// Initialize global variables if necessary.
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
// Do your job here which should run before the request processing.
chain.doFilter(request, response);
// Do your job here which should run after the request processing.
}
@Override
public void destroy() {
// Cleanup global variables if necessary.
}
}
関連する問題
- 1. JSF 2.2 ViewAction Iのように定義viewActionとJSFビューを有するCDIインターセプタ
- 2. BasicDataSourceのSpringインターセプタ
- 3. PHPのインターセプタ
- 4. Node.jsのインターセプタ
- 5. スタティックメソッドのインターセプタ
- 6. ejb 3.0のインターセプタ
- 7. struts2のparamsPrepareParamsStackインターセプタ?
- 8. Angular2のインターセプタ
- 9. RESTEasyのインターセプタ
- 10. StructureMapインターセプタ
- 11. フィルタキューへのActiveMQインターセプタ
- 12. EJB 2.xのインターセプタ
- 13. 2キャッシング - インターセプタのチェーン
- 14. .NET用のSOAPインターセプタ?
- 15. Spring.NETとコンストラクタのインターセプタ
- 16. はインターセプタのREST API
- 17. ログ用のEJB3インターセプタ
- 18. Seamインターセプタへのセッションオブジェクト
- 19. モバイルファーストプラットフォームのインターセプタ動作
- 20. Struts 2のインターセプタは、Java Spring 3のインターセプタと同じですか?
- 21. Java EE EJBインターセプタ
- 22. CDIインターセプタとmemcache
- 23. Apache Cxfインターセプタ
- 24. Spring Cacheインターセプタ
- 25. インターセプタとApache Camel
- 26. AngularインターセプタとCORS
- 27. にAroundInvokeインターセプタ
- 28. Castle Windsor WCFインターセプタ
- 29. Springインターセプタ対サーブレットフィルタ
- 30. Spring RestEasyインターセプタ
1対1マッピングはありそうにありません。 [PhaseListeners](http://docs.oracle.com/javaee/6/api/javax/faces/event/PhaseListener.html)を参照してください。 – McDowell