2015-01-05 9 views
5

सर्वर साइड उपयोग नहीं कर सकते: स्प्रिंग फ्रेमवर्कस्प्रिंग ResponseEntity और AJAX त्रुटि समारोह: प्रतिक्रिया शरीर सामग्री

मैं एक स्प्रिंग नियंत्रक एक विधि है कि प्रकार ResponseEntity<String> देता है कि है।

return new ResponseEntity<>(OK_MESSAGE, new HttpHeaders(), HttpStatus.OK); 

लेकिन वहाँ निष्पादन या अपवाद को पकड़ने के दौरान किसी भी समस्या होने पर, मैं वापसी:

पूरी तरह से अच्छा अनुरोधों के लिए मैं निम्नलिखित लौट

return new ResponseEntity<>(ERROR_MESSAGE, new HttpHeaders(), HttpStatus.BAD_REQUEST); 

कहाँ ERROR_MESSAGE प्रत्येक के लिए एक अनुकूलित स्ट्रिंग शामिल अपवाद का प्रकार कैच किया गया।

क्लाइंट साइड: AJAX कॉल

POST विधि कहा जाता है और HttpStatus.OK रिटर्न किया जाता है, AJAX

success: function (data, message, xhr) 

कहा जाता है और मैं easilly data एक्सेस करके स्ट्रिंग OK_MESSAGE उपयोग कर सकते हैं ।

समस्या आता POST विधि का रिटर्न HttpStatus.BAD_REQUEST, AJAX

error: function (xhr, status, errMsg) 

कहा जाता है, लेकिन मैं स्ट्रिंग ERROR_MESSAGE सर्वर है, जो मैं उपयोगकर्ता दिखाने की जरूरत द्वारा भेजे गए उपयोग नहीं कर सकते।

कोई सुझाव?

+0

हाय @charliebrownie आप कर सकते हैं तो कृपया AJAX और नियंत्रक दोनों के कोड पोस्ट करें? – liorsolomon

+0

हाय! मेरी स्प्रिंग कंट्रोलर विधि बिल्कुल ठीक है, एक 'ResponseEntity ', जहां स्ट्रिंग वह है 'ERROR_MESSAGE' चर। AJAX कॉल में एकमात्र अंतर यह है कि जब मुझे एक ठीक प्रतिक्रिया मिलती है तो मैं उस 'डेटा' चर में उस स्ट्रिंग तक पहुंच सकता हूं। क्या 'त्रुटि' फ़ंक्शन से इसे एक्सेस करने का कोई तरीका है? – charliebrownie

+0

यदि आपको कोड की आवश्यकता है तो मैं एक * संपादन * या कुछ कर सकता हूं, लेकिन मुझे आश्चर्य है कि उस स्ट्रिंग तक पहुंचने का कोई तरीका है, मैं 'त्रुटि' फ़ंक्शन से 'ResponseEntity' के अंदर गुजर रहा हूं जो मुझे याद आ रहा है ... क्योंकि AJAX 'सफलता 'फ़ंक्शन से कोई तरीका है। – charliebrownie

उत्तर

4

नियंत्रक पर मैं निम्नलिखित तरीके से ResponseEntity वापसी:

return new ResponseEntity<>("Enter the full url", new HttpHeaders(), HttpStatus.BAD_REQUEST); 

जे एस में मैं निम्नलिखित तरीके से प्रतिक्रिया त्रुटि स्ट्रिंग की जाँच करेगा:

$.ajax({ 
      url: 'http://localhost:8080/link', 
      data: 'url=/www.stackoverflow.om', 
      type: 'GET', 

      contentType: 'application/json; charset=utf-8', 
      success: function (data, textStatus, xhr) { 
       alert(xhr.status); 
      }, 
      error: function (data, textStatus, xhr) { 
       alert(data.responseText); 
      } 
     }) 
संबंधित मुद्दे