JSON

2011-04-12 18 views
6

का उपयोग कर वसंत 3 अपवाद हैंडलिंग मेरे पास Controller है और मैं गलत होने के उपयोगकर्ता को प्रतिक्रिया प्राप्त करना चाहता हूं। त्रुटि कॉलबैक निष्पादित किया गया है लेकिन त्रुटि संदेश क्लाइंट को वापस नहीं भेजा गया है।JSON

JQuery कॉल:

var validateButton = $('#validateSteps'); 
validateButton.bind('click', function() { 
    var stepsInput = $(':input').serializeArray(); 
    $.postJSON('validate.htm', stepsInput, function(data) { 
     alert(data); 
     var steps = $('#steps'); 
     var i = 0; 
     for(i=0;i<data.length;i++) { 
      steps.stepWidget('setValidationStatus', {testStepId: data[i].testStepId, interactionType: data[i].interactionType, validationStatus: data[i].validationStatus}); 
      steps.stepWidget('setErrorDescriptions', {testStepId: data[i].testStepId, interactionType: data[i].interactionType, errorDescriptions: data[i].errorDescriptions}); 
     } 
     return false; 
    }, { 
      error: function (XMLHttpRequest, textStatus, errorThrown, data) { 
       alert("error function"); 
       alert(textStatus); 
       alert(errorThrown);    
       alert("Internal Server Error: " + data); 
      return false; 
     } 
    }); 
    return false; 
}); 

नियंत्रक:

@RequestMapping(value = "validate.htm", method = RequestMethod.POST) 
public @ResponseBody 
List<ValidationBean> validateSteps(
     @RequestBody List<Map<String, String>> testCaseInputs, 
     HttpServletResponse response) throws MalformedMessageException, 
     MalformedProfileException, XmlException, IOException, 
     MissingDependencyException, MessageValidationException { 
    List<ValidationBean> validations = new ArrayList<ValidationBean>(); 
    ... 
    return validations; 
} 

नियंत्रक में अपवाद संचालक:

@ExceptionHandler(Exception.class) 
public @ResponseBody 
String handleException(Exception e, HttpServletResponse response) { 
    response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); 
    return e.getMessage(); 
} 

क्या मैं उपयोगकर्ता को दिखाना चाहते हैं String है जिसे handleException विधि द्वारा वापस किया जाना चाहिए। error कॉलबैक में data पैरामीटर undefined है।

उत्तर

3

काफ़ी मिलती-जुलती प्रश्न के मेरी प्रतिक्रिया की जाँच करें: Spring MVC returning JSONS and exception Handling

+0

मैंने कोशिश की लेकिन मैं अभी भी एक ही व्यवहार किया है। जब कोई अपवाद फेंक दिया जाता है, तो 'हैंडलएक्सप्शन' कहा जाता है और 'HTTP 500' वापस कर दिया जाता है। फायरबग में प्रतिक्रिया 'JSON' नहीं है लेकिन' HTTP 500' के मामले में 'HTML' है। 'HTTP 200' JSON के लिए वापस आ गया है। – Sydney

+0

संपादित करें: जब मैं एक 'प्रतिक्रिया' वस्तु वापस करता हूं तो मुझे 'HTTP 406' त्रुटि मिली। – Sydney

+0

'प्रतिक्रिया' वर्ग में गेटर्स को जोड़ने से 'HTTP 406' त्रुटि ठीक हो गई। 'HTTP 500' अभी भी एचटीएमएल – Sydney