2009-11-13 8 views
2

Привет в JSF Мне нужно выполнить какое-либо действие, когда заканчивается каждый запрос пользователя. Мне нужен какой-то перехватчик, но я не знаю, как это сделать. Мне нужна помощь в этом, пожалуйста. БлагодаряКак перехватить запрос заканчивается?

ответ

1

Я рекомендую блог BalusC в: http://balusc.blogspot.com/2006/09/debug-jsf-lifecycle.html

В этой статье показано, как перехватить JSF lifecycle и отладить информацию. Это также позволит вам узнать, где заканчивается ваш запрос.

Если вы разместили здесь какой-то код, это также поможет нам выяснить, где находится настоящая проблема. Вот отрывок кода, который нужно реализовать, чтобы отладить жизненный цикл:

package mypackage; 

import javax.faces.event.PhaseEvent; 
import javax.faces.event.PhaseId; 
import javax.faces.event.PhaseListener; 

public class LifeCycleListener implements PhaseListener { 

    public PhaseId getPhaseId() { 
     return PhaseId.ANY_PHASE; 
    } 

    public void beforePhase(PhaseEvent event) { 
     System.out.println("START PHASE " + event.getPhaseId()); 
    } 

    public void afterPhase(PhaseEvent event) { 
     System.out.println("END PHASE " + event.getPhaseId()); 
    } 

} 
1

Если вы хотите иметь FacesContext доступны, то лучшее место является afterPhase из PhaseID.RENDER_RESPONSE внутри PhaseListener. Например:

public class MyPhaseListener implements PhaseListener { 

    public PhaseId getPhaseId() { 
     return PhaseId.RENDER_RESPONSE; 
    } 

    public void beforePhase(PhaseEvent event) { 
     // No operation here. 
    } 

    public void afterPhase(PhaseEvent event) { 
     FacesContext context = event.getFacesContext(); 
     // Do your thing here with the FacesContext. 
    } 

} 

Если вы не нуждаетесь в FacesContext, то лучшее место после линии chain.doFilter(request, response) внутри Filter. Например:

+1

Хехе смешно, как я только что ссылался на статью на вашем сайте, прежде чем вы ответили на это сообщение, а также =) –

Смежные вопросы