Я хочу знать, есть ли перехватчик в JSF (как мы используем весной), и как его реализовать?Перехватчик в JSF
ответ
Для этого можно использовать PhaseListener
. Вы можете запрограммировать их для прослушивания на specific JSF phase, который вы укажете в переопределенном методе getPhaseId()
. Вы можете перехватить события до и после фазы по 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.
}
}
Чтобы заставить его работать, вы должны зарегистрировать его в качестве <phase-listener>
в <life-cycle>
секции файла faces-config.xml
. Вы можете иметь несколько <phase-listener>
s.
<lifecycle>
<phase-listener>com.example.RequestInterceptor</phase-listener>
</lifecycle>
Вы можете указать PhaseId.ANY_PHASE
в getPhaseId()
, чтобы фаза слушатель работать на каждом этапе JSF (обратите внимание, что не обязательно все из них всегда будут выполняться, это зависит от типа запроса). Вы можете при необходимости получить идентификатор текущей фазы в методах до и после фазы на 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. Перехватчик дыма в Python
- 2. paramsPrepareParamsStack перехватчик в стойках2?
- 3. Перехватчик в AngularJS
- 4. Перехватчик в PHP
- 5. Перехватчик Hibernate
- 6. Перехватчик Vue.js
- 7. Перехватчик AngularJS
- 8. Что такое перехватчик в дротике?
- 9. HTTP-перехватчик в угловом 2
- 10. Угловой: Использование $ rootScope в перехватчик
- 11. Перехватчик в данных весны jpa
- 12. Перехватчик токенов Struts2 в аннотации
- 13. Реализовать http-перехватчик в angular.js
- 14. Изменение JSON Тело в перехватчик
- 15. Перехватчик токенов в стойках 1.2
- 16. Пользовательский пружинный перехватчик
- 17. Перехватчик сообщений jms
- 18. Необходим быстрый перехватчик
- 19. Grails: многоразовый перехватчик аутентификации
- 20. угловой запрос занятый перехватчик
- 21. CDI перехватчик Scope аннотацию
- 22. Поиск «Перехватчик Windows Printer»
- 23. Spring WS & Validator перехватчик
- 24. угловой перехватчик не отклоняется
- 25. Вставить перехватчик MBean
- 26. Java приоритет перехватчик
- 27. спящий перехватчик сообщение сохранить?
- 28. struts2 стек перехватчик
- 29. Hibernate afterAfterTransactionCompletion перехватчик
- 30. Замок Перехватчик не перехватывает
Существует маловероятное сопоставление один-к-одному. Посмотрите на [PhaseListeners] (http://docs.oracle.com/javaee/6/api/javax/faces/event/PhaseListener.html). – McDowell