2016-11-16 2 views
1

У меня есть метод, который меняет статус с «активным» в неактивный и вицеВозврат JSON Использование карты

Versa, в записи, путем выборки это идентификатор.

Теперь я хочу, чтобы преобразовать его вернуть объект ResponseEntity, внутри которого, у меня есть карта хранится

Когда я проверить мой метод, я получаю 400: Bad Request

//////////////////////// Старый метод ////////////////

@RequestMapping("toggleStatus") 
    public @ResponseBody void toggleStatus(@RequestParam("resourceId") Long resourceId){ 
     ResourceElementMaster resourceElementMaster = resourceElementService.findById(resourceId); 
     if(resourceElementMaster.getIsActive() == true) { 
      resourceElementMaster.setIsActive(false); 
     } else { 
      resourceElementMaster.setIsActive(true); 
     } 
     resourceElementService.update(resourceElementMaster); 
    } 

////////////////////// Новый метод /////////////////////////////

@RequestMapping(value="toggleStatus",method=RequestMethod.PUT) 
    public @ResponseBody ResponseEntity<Map<String, Object>> toggleStatus(@RequestBody Long resourceId){ 
     Map<String, Object> mapToggle=new HashMap<String, Object>(); 
     ResourceElementMaster resourceElementMaster = resourceElementService.findById(resourceId); 
     if(resourceElementMaster.getIsActive() == true) { 
      resourceElementMaster.setIsActive(false); 
     } else { 
      resourceElementMaster.setIsActive(true); 
     } 
     mapToggle.put("Update",resourceElementService.update(resourceElementMaster)); 
     return new ResponseEntity<Map<String, Object>>(mapToggle, HttpStatus.OK) ; 
    } 

Как решить эту проблему ??

+0

JSON, который я пройти, чтобы проверить этот метод, является: { "ResourceId": 57, "IsActive": истинная } –

ответ

0

Не передать JSON, вам нужно всего лишь пройти RESOURCEID, который вы принимающую в качестве параметра в методе toggleStatus.

Кроме того, использование @RequestParam вместо @RequestBody:

@RequestMapping(value="toggleStatus",method=RequestMethod.POST) 
public @ResponseBody ResponseEntity<Map<String, Object>> toggleStatus(@RequestParam(value = "resourceId") Long resourceId){ 
    Map<String, Object> mapToggle=new HashMap<String, Object>(); 
    ResourceElementMaster resourceElementMaster = resourceElementService.findById(resourceId); 
    if(resourceElementMaster.getIsActive() == true) { 
     resourceElementMaster.setIsActive(false); 
    } else { 
     resourceElementMaster.setIsActive(true); 
    } 
    mapToggle.put("Update",resourceElementService.update(resourceElementMaster)); 
    return new ResponseEntity<Map<String, Object>>(mapToggle, HttpStatus.OK) ; 
} 
1

У вас проблема, вы пытаетесь передать json вашему методу /toggleStatus. Но ваш @Controller принимает только resourceId типа Long.

Таким образом, ваш ответ через Почтальон должен быть что-то вроде этого:

PUT http://localhost:8080/toggleStatus?resouceId=42

также, что нет необходимости в RequestEntity в вашем случае. Измените @controller так:

@ResponseBody 
@RequestMapping(value = "toggleStatus", method = RequestMethod.PUT) 
public Object toggleStatus(@RequestParam Long resourceId){ 
    Map<String, Object> mapToggle = new HashMap<String, Object>(); 
    ResourceElementMaster resourceElementMaster = resourceElementService.findById(resourceId); 
    resourceElementMaster.setIsActive(!resourceElementMaster.getIsActive()); 
    mapToggle.put("Update", resourceElementService.update(resourceElementMaster)); 
    return mapToggle; 
} 
+0

То же: 400 Bad Request. –

+0

Как это проверить? Я прошел следующий JSON в Почтальон: { "RESOURCEID": 57, "версия": 1, "название" : "Allegation1", "Активный": истинный } –

+1

Почему вы передаете 'json'? Ваш контроллер принимает только «resourceId». – dit

Смежные вопросы