में इंटरसेप्टर मैं जानना चाहता हूं कि जेएसएफ में एक इंटरसेप्टर है (जैसे हम वसंत में उपयोग करते हैं), और हम इसे कैसे कार्यान्वित करते हैं?जेएसएफ
जेएसएफ
उत्तर
आप इसके लिए 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.
}
}
आप faces-config.xml
फ़ाइल के <life-cycle>
अनुभाग में एक <phase-listener>
के रूप में यह रजिस्टर करने की आवश्यकता इसे चलाने के लिए प्राप्त करने के लिए,। आपके पास एकाधिक <phase-listener>
एस हो सकते हैं।
<lifecycle>
<phase-listener>com.example.RequestInterceptor</phase-listener>
</lifecycle>
आप चरण श्रोता हर एक JSF चरण पर चलने जाने के लिए getPhaseId()
में PhaseId.ANY_PHASE
निर्दिष्ट कर सकते हैं (ध्यान दें कि जरूरी नहीं कि उन सभी हमेशा निष्पादित किया जाएगा, उस अनुरोध प्रकार पर निर्भर करता)। यदि आवश्यक हो तो 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. जेएसएफ
- 2. जेएसएफ
- 3. जेएसएफ
- 4. जेएसएफ
- 5. जेएसएफ
- 6. जेएसएफ
- 7. जेएसएफ
- 8. जेएसएफ
- 9. जेएसएफ
- 10. जेएसएफ
- 11. जेएसएफ
- 12. जेएसएफ
- 13. जेएसएफ
- 14. जेएसएफ
- 15. जेएसएफ
- 16. जेएसएफ
- 17. जेएसएफ
- 18. जेएसएफ
- 19. जेएसएफ
- 20. जेएसएफ
- 21. जेएसएफ
- 22. जेएसएफ
- 23. जेएसएफ
- 24. जेएसएफ
- 25. जेएसएफ
- 26. जेएसएफ
- 27. जेएसएफ 2.0
- 28. जेएसएफ 2
- 29. जेएसएफ ड्राफ्ट
- 30. जेएसएफ घटक
एक-से-एक मैपिंग होने की संभावना नहीं है। [PhaseListeners] पर एक नज़र डालें (http://docs.oracle.com/javaee/6/api/javax/faces/event/PhaseListener.html)। – McDowell