में पूर्ण अनुरोधों से AJAX अनुरोधों को अलग करें मेरे सत्यापनकर्ता को यह जानने की आवश्यकता है कि यह एक पूर्ण अनुरोध या AJAX अनुरोध है या नहीं। मेरे वर्तमान समाधान में मैं X-Requested-With
तत्व के लिए HTTP अनुरोध हेडर की जाँच करें:जेएसएफ कस्टम सत्यापनकर्ता
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
HttpServletRequest req = (HttpServletRequest) context.getExternalContext().getRequest();
if (req.getHeader("X-Requested-With") != null) {
// do something
} else {
// do something else
}
...
}
वहाँ एक बेहतर दृष्टिकोण इस लक्ष्य को हासिल करने के लिए है? क्या मेरा समाधान अलग-अलग ब्राउज़र/जावास्क्रिप्ट libs के संबंध में "सुरक्षित" है?
अद्यतन:
बस पता चला कि एक्स-अनुरोधित-साथ हैडर ही मौजूद है, तो ajax अनुरोध Primefaces घटक पुस्तकालय (<p:ajax>
टैग) से आता है।
यह मौजूद नहीं है यदि मैं सादा JSF <f:ajax>
का उपयोग करता हूं। तो मेरा दृष्टिकोण<f:ajax>
के साथ काम नहीं करेगा।
<f:ajax>
का उपयोग करते हुए एक अलग शीर्षक है:
Faces-Request:partial/ajax
समाधान OSW द्वारा प्रस्तावित के लिए <f:ajax>
और<p:ajax>
काम करता है:
PartialViewContext#isAjaxRequest()
आपके उत्तर के लिए धन्यवाद। बढ़िया है। क्या आप जानते हैं कि विधि क्या करती है? शायद हेडर के लिए भी जांच करता है। –
@ मैट, क्षमा करें, यह नहीं पता कि यह वास्तव में क्या करता है, लेकिन विकल्प हेडर की जांच कर रहे हैं या अनुरोध पैरामीटर मानचित्र की जांच कर रहे हैं। – Osw
मेरा प्रश्न अपडेट किया गया। ऐसा लगता है कि मेरा समाधान सुरक्षित नहीं है। –