2016-07-18 7 views
0
Controller code of Angular Js... 
    FactoryPBD.showPbdCostCompareData(data).success(
     function(result) { 
      if(result != ""){ 
       //doing my processing and working fine 

     }).error(function(result,status,message){ 
      console.log("result" , result); 
      //getting undefined in all the above variable 
     }); 


     Service code: 
     showPbdCostCompareData : function(filter) { 
       promise = $http({ 
        url : 'pbd/showPbdCostCompareData?serachFilterJson='+JSON.stringify(filter), 
        method : "POST" 
       }); 
       return promise; 
      } 

    Java Controller:- 

    @RequestMapping(value = "/showPbdCostCompareData", method = RequestMethod.POST) 
       public @ResponseBody ResponseEntity<String> showPbdCostCompareData(HttpServletRequest request, 
       @RequestParam String serachFilterJson) { 
      try { 
       if (null != serachFilterJson && !"".equalsIgnoreCase(serachFilterJson)) { 
        Gson gson = new Gson(); 
        SearchCriteriaBean searchCriteriaObj = gson.fromJson(serachFilterJson, SearchCriteriaBean.class); 
        CnHeaderBean cnHeaderBean = pbdServiceImpl.getPbdCostCompareCnHeaderData(searchCriteriaObj); //getting the value from sevice 
        List<PbdCostCompareBean> pbdCostCompareList = null; 
        if (null != cnHeaderBean) { 
         if("F".equalsIgnoreCase(cnHeaderBean.getPbdType())){ 
          searchCriteriaObj.setFromPartIscb(cnHeaderBean.getFromPartIscb()); 
          searchCriteriaObj.setToPartIscb(cnHeaderBean.getToPartIscb()); 
          pbdCostCompareList = pbdServiceImpl.getPbdCostComparisonData(searchCriteriaObj); //getting the value from sevice 
         }else{ 
          return new ResponseEntity<String>("Incorrect PBD Type",HttpStatus.SERVICE_UNAVAILABLE); 
         }     
        } else { 
         return new ResponseEntity<String>(HttpStatus.SERVICE_UNAVAILABLE); 
        } 
        HashMap<Integer, Object> costCompareMap = new HashMap<Integer, Object>(); 
        costCompareMap.put(1, cnHeaderBean); 
        costCompareMap.put(2, pbdCostCompareList); 
        costCompareMap.put(3, pbdServiceImpl.validateUserAccess(searchCriteriaObj, serviceUtility.getUserFromSession(request))); 
        String pbdDataJsonResponse = gson.toJson(costCompareMap); 
        return new ResponseEntity<String>(pbdDataJsonResponse, HttpStatus.OK); 
       } else { 
        return new ResponseEntity<String>(HttpStatus.SERVICE_UNAVAILABLE); 
       } 
      } catch (C2PCException e) { 
       return new ResponseEntity<String>(e.getMessage(),HttpStatus.SERVICE_UNAVAILABLE); 
      } 
     } 

Я использую контроллер Spring Rest с Angular js для моего проекта. Все работает нормально, и данные отправляются на клиентскую сторону, когда на стороне Java нет ошибок. Но в случае исключения на стороне java, тогда в зависимости от исключения я хочу вернуть свое сообщение пользователю. Мой текст ответа не передается на клиентскую сторону. Любая помощь будет оценена по достоинству. Код приведен выше Здесь, в приведенном выше e.getMessage, я получаю свое настраиваемое сообщение, которое я установил на уровне сервиса mu и выбрасывает исключение. Но на стороне клиента в сообщении об ошибке я получаю все значения как неопределенные.ResponseEnity с угловой js

+0

e.getMessage является строкой. В угловом js при возникновении ошибки вы ожидаете возвращения JSON или HTML/текста? Когда это произойдет, я предполагаю, что вы ожидаете JSON. –

+0

Его JSON я верю ... Как преобразовать это в JSON. –

ответ

0

Я предполагаю, что в угловых JS, когда происходит ошибка, JSON, как ожидается, и не HTML/текста

Таким образом, преобразовать исключение JSON. Вы можете создать класс т.е.

class ClassErrorMessage { 
    private String errorCode; 
    private String errorMessage; 
    ClassErrorMessage() { 
    } 
//getters and setters 
} 

, а затем

catch (C2PCException e) { 
    ClassErrorMessage classErrorMessage= new ClassErrorMessage(); 
    classErrorMessage.setErrorCode("some code that you may want"); 
    classErrorMessage.setErrorMessage(e.getMessage()); 
    String error = gson.toJson(classErrorMessage); 
    return new ResponseEntity<String>(error,HttpStatus.SERVICE_UNAVAILABLE); 
} 

и дайте мне знать, если это работает для вас

+0

Спасибо за ответ, у вас все получилось. Но вместо создания класса ошибок я сделал свой тест на ошибку как json и отправил его обратно в угловые js. –