Quiero saber si hay un interceptor en JSF (como lo usamos en Spring), y cómo hacerlo lo implementamos?Interceptor en JSF
Respuesta
Puede implementar un PhaseListener
para esto. Puede programarlos para que escuchen en un specific JSF phase que especifique en el método getPhaseId()
reemplazado. Puede interceptar en los eventos de fase anterior y posterior mediante los métodos beforePhase()
y afterPhase()
.
El ejemplo a continuación escucha en la fase de respuesta render:
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.
}
}
Para conseguir que se ejecute, es necesario registrarse como un <phase-listener>
en la sección <life-cycle>
del archivo faces-config.xml
. Puede tener múltiples <phase-listener>
s.
<lifecycle>
<phase-listener>com.example.RequestInterceptor</phase-listener>
</lifecycle>
Puede especificar PhaseId.ANY_PHASE
en getPhaseId()
para que el oyente fase de ejecución en cada fase de JSF sola (tenga en cuenta que no necesariamente todos de ellos siempre se ejecutará, que depende del tipo de solicitud). Si es necesario, puede obtener la ID de fase actual en los métodos de fase antes y después por 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());
}
}
Alternativamente, un Filter
debería funcionar igual de bueno si quieres un gancho más global (y por lo tanto no está interesado en exactamente las peticiones JSF/respuestas y usted no necesita nada de la 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. Método Interceptor en métodos privados
- 2. Hibernate 4.0.0Final dónde está el sessionFactory.openSession (interceptor interceptor)
- 3. Método de interceptor no llamado con enlace de interceptor
- 4. Interceptor NHibernate: ¿Qué es
- 5. Interceptor mvc Spring addObject
- 6. Grails Filters vs Interceptor
- 7. Hibernate Interceptor/Listeners para HQL
- 8. Alcance en JSF Validator
- 9. Redirección condicional en JSF
- 10. Internacionalización en JSF 2.0
- 11. Estilo condicional en JSF
- 12. Valuechangelistener duda en JSF
- 13. Ámbitos en JSF 2
- 14. atrás commandbutton en jsf
- 15. prestación condicional en JSF
- 16. paginación en jsf
- 17. Seguridad básica en JSF
- 18. DataTable en JSF
- 19. NHibernate: diferencia entre Interceptor y Oyente
- 20. Interceptor RestEASY No se ha llamado
- 21. Log4j Logger para Struts 2 Exception Interceptor
- 22. Cómo manejar atributos de enlace de interceptor
- 23. WCF validación de parámetros con Interceptor
- 24. Fetch JSF Converter para clase en ManagedBean (JSF 1.2)
- 25. Spring: aspecto de registro estándar (interceptor)
- 26. viewExpiredException JSF
- 27. JSF Tuning
- 28. ¿Hay algún tipo de implementación de Interceptor en sqlite
- 29. ¿Cómo acceder a la sesión del servlet en CXF Interceptor?
- 30. Cómo usar Spring Autowired en un interceptor cxf personalizado?
Es poco probable que exista una asignación de uno a uno. Eche un vistazo a [PhaseListeners] (http://docs.oracle.com/javaee/6/api/javax/faces/event/PhaseListener.html). – McDowell