2015-05-04 51 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); 
     }, 
    }); 
} 
相關問題