का उपयोग कर वसंत 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
है।
मैंने कोशिश की लेकिन मैं अभी भी एक ही व्यवहार किया है। जब कोई अपवाद फेंक दिया जाता है, तो 'हैंडलएक्सप्शन' कहा जाता है और 'HTTP 500' वापस कर दिया जाता है। फायरबग में प्रतिक्रिया 'JSON' नहीं है लेकिन' HTTP 500' के मामले में 'HTML' है। 'HTTP 200' JSON के लिए वापस आ गया है। – Sydney
संपादित करें: जब मैं एक 'प्रतिक्रिया' वस्तु वापस करता हूं तो मुझे 'HTTP 406' त्रुटि मिली। – Sydney
'प्रतिक्रिया' वर्ग में गेटर्स को जोड़ने से 'HTTP 406' त्रुटि ठीक हो गई। 'HTTP 500' अभी भी एचटीएमएल – Sydney