2015-05-04 73 views
0

StudentController消息 - 这是我的控制器类返回例外,我想处理并在jsp中显示这些显示异常的从控制器MVC在JSP页面

@RequestMapping(value = RequestURL.ADD_STUDENT, method = RequestMethod.POST) 
     @ResponseBody 
     public void addStudent(@RequestBody AddStudentRequest addStudentRequest) throws StudentGroupNumberNotFoundException, SpecializationNotFoundException { 

      User user = new User(addStudentRequest.getUsername(), 
        addStudentRequest.getPassword(), Role.ROLE_STUDENT); 
      userService.add(user); 

      user = userService.findByUsername(addStudentRequest.getUsername()); 
      int userId = user.getId(); 
      try { 
       int groupId = studentGroupService 
         .getIdByGroupNumber(addStudentRequest.getGroup()); 
       int specializationId = specializationService 
         .getIdByName(addStudentRequest.getSpecialization()); 
       Student student = new Student(userId, specializationId, 
         addStudentRequest.getName(), 
         addStudentRequest.getRegistrationNumber(), groupId, 
         addStudentRequest.getYear()); 
       studentService.add(student); 
      } catch (StudentGroupNumberNotFoundException e) { 
       throw new StudentGroupNumberNotFoundException(e.getMessage()); 
      } catch (SpecializationNotFoundException e) { 
       throw new SpecializationNotFoundException (e.getMessage()); 
      } 
     } 

student.jsp - 学生

jsp页面
function addStudent() { 

      var username = $('#modalStudentUsername').val(); 
      var password = $('#modalStudentPassword').val(); 
      var name = $('#modalStudentName').val(); 
      var registrationNumber = $('#modalStudentRegistrationNumber').val(); 
      var group = $('#modalStudentGroup').val(); 
      var year = $('#modalStudentYear').val(); 
      var specialization = $('#modalStudentSpecializationId').val(); 

      var data = '{ "username" : "' + username + '", "password": "' 
      + password + '", "name":"' + name 
      + '","registrationNumber": "' + registrationNumber + '" , "specialization": "' + specialization 
      + '","group": "' + group+'", "year": " ' + year + '" }'; 

      var token = $('#csrfToken').val(); 
      var header = $('#csrfHeader').val(); 

      $.ajax({ 
         type : "POST", 
         url : "student/add", 
         contentType : 'application/json', 
         data : data, 

         beforeSend : function(xhr) { 
          xhr.setRequestHeader("Accept", "application/json"); 
          xhr.setRequestHeader("Content-Type", "application/json"); 
          xhr.setRequestHeader(header, token); 
         }, 

         success : function(data, status, xhr) { 
          alert("Success!"); 
         }, 
         error : function(xhr, status, errorThrown) { 
          alert("Error!"); 
         }, 
        }); 
     } 

我想从ajax中显示来自控制器的异常消息。任何人都可以帮我吗?谢谢!

+0

最好是从*乌尔控制器方法返回字符串值*等上成功像'OK'&在失效情况[e.getMessage();](HTTP: //docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html#getMessage())。 – OO7

+0

尝试在alert中调用'xhr.responseText'。 – OO7

+0

不知道但是,我认为原因是ur方法返回类型'void'。尝试改变'String'。 – OO7

回答

0

变化从voidString &方法返回类型给xhr.responseText来电alert()就像如下: -

变化控制器:

@ResponseBody 
public void addStudent(@RequestBody AddStudentRequest addStudentRequest) throws StudentGroupNumberNotFoundException, SpecializationNotFoundException { 
    // business logic 
} 

@ResponseBody 
public String addStudent(@RequestBody AddStudentRequest addStudentRequest) throws StudentGroupNumberNotFoundException, SpecializationNotFoundException { 
    // business logic 
} 

更改在JavaScript:

function addStudent() { 
    // ... 
    $.ajax({ 
     type : "POST", 
     url : "student/add", 
     contentType : 'application/json', 
     data : data, 
     beforeSend : function(xhr) { 
      xhr.setRequestHeader("Accept", "application/json"); 
      xhr.setRequestHeader("Content-Type", "application/json"); 
      xhr.setRequestHeader(header, token); 
     }, 
     success : function(data, status, xhr) { 
      alert(xhr.responseText); 
     }, 
     error : function(xhr, status, errorThrown) { 
      alert(xhr.responseText); 
     }, 
    }); 
}