2014-01-22 3 views
1

봄과 최대 절전 모드 사용. 어떻게 아약스 메소드의 응답과 함께 모델의 메시지도 보낼 수 있습니까? 나는 더 나은 가장 연습 된 방법이 무엇을 의미합니다. 세 가지에 대한 모든 샘플 코드는 전체 객체를 반환 (더 리턴 필요한 객체)스프링 아약스에서 객체를 가진 메시지를 반환하는 자바 스크립트를 읽는 방법

@RequestMapping (value = "/attachment/download/{attachmentId}", method=RequestMethod.GET) 
public String downloadFile(HttpServletResponse response, 
          @PathVariable(value = "attachmentId")Long attachmentId 


)throws IOException{ 
    result = taskService.getAttachmentById(attachmentId); 
    if(result.getIsSuccessful()){ 
     Attachment attachment = (Attachment)result.getObject(); 
     File file = new File(attachment.getPath()); 
     response.setContentType("application/octet-stream"); 
     response.setHeader("Content-Disposition", "attachment; filename=\"" + file.getName() + "\""); 
     byte[] ba = FileUtils.readFileToByteArray(file); 
     response.getOutputStream().write(ba); 
    } 
    return null; 
    //queued - send model message also (if needed) 
} 

3 널 (null)을 반환하는 문자열

@RequestMapping (value = "/task/delete/{taskId}", method=RequestMethod.GET) 
public @ResponseBody String deleteTask(ModelMap model, 
             @PathVariable(value="taskId") String taskId 
            ){ 
    result = taskService.deleteTask(Long.parseLong(taskId)); 
    if (result.getIsSuccessful()) { 
     model.put("successMessages", result.getMessageList()); 
     System.out.println("task deleted ------------------"); 
     return "success";//queued - send model message also (if needed) 
    }else{ 
     System.out.println("task deletion failed ---------------"); 
     model.put("errorMessages", result.getMessageList()); 
     return "failure";//queued - send model message also (if needed) 
    } 
} 

2를 반환하지 않습니다 경우?

일을했다.

@RequestMapping (value = "/task/create/{parentBoxId}/{taskTitle}/{taskDescription}", method=RequestMethod.GET) 
    public @ResponseBody Tasks createTask(ModelMap model, 
              @PathVariable(value="parentBoxId") String parentBoxId, 
              @PathVariable(value="taskTitle") String taskTitle, 
              @PathVariable(value="taskDescription") String taskDescription 

             ){ 


     Tasks taskToBeReturned = null; 
     Tasks task = new Tasks(); 
     task.setTitle(taskTitle); 
     task.setDescription(taskDescription); 
     Boxes parentBox = (Boxes)(boxService.getBoxById(Long.valueOf(parentBoxId))).getObject(); 
     taskService.setParent(task, parentBox); 
     result = taskService.save(task); 
     if(result.getIsSuccessful()){ 
      model.put("successMessages", result.getMessageList()); 
      Tasks savedTask = (Tasks)result.getObject(); 
      System.out.println("box saved title was " + savedTask.getTitle()); 
      taskToBeReturned = new Tasks(); 
      taskToBeReturned.setTitle(savedTask.getTitle()); 
      taskToBeReturned.setId(savedTask.getId()); 
      taskToBeReturned.setDescription(savedTask.getDescription()); 
     }else{ 
      model.put("errorMessages", result.getMessageList()); 
     } 
     return taskToBeReturned; //queued - send model message also (if needed) 
    } 

답변

1

이 작업을 수행하는 가장 좋은 방법은 Hashmap과 같은 구조를 사용하는 것입니다. 나는 당신이 "null null"예제에서 무엇을하려고하는지 정말로 이해하는지 모르겠다.하지만 아마도 AJAX 호출에서 널을 반환하지 않아야한다고 생각한다. 아마도 에러와 같은 것을 반환해야 할 것이다. 사용에 의존한다. 케이스. 다른 사용 사례의 경우 다음 예제와 같은 방식으로이 작업을 수행 할 수 있습니다. 문자열을 반환

@RequestMapping (value = "/task/delete/{taskId}", method=RequestMethod.GET) 
public @ResponseBody Map<String, Object> deleteTask(ModelMap model, @PathVariable(value="taskId") String taskId) { 

    Map<String, Object> result = new HashMap<String, Object>(); 
    result = taskService.deleteTask(Long.parseLong(taskId)); 

    if (result.getIsSuccessful()) { 
     model.put("successMessages", result.getMessageList()); 
     System.out.println("task deleted ------------------"); 

     result.put("result", "success"); 
     result.put("model", model); // Add the model if needed   

    }else{ 
     System.out.println("task deletion failed ---------------"); 
     model.put("errorMessages", result.getMessageList()); 

     result.put("result", "failure"); 
     result.put("model", model); // Add the model if needed 
    } 
    return result; 
} 

는 객체

@RequestMapping (value = "/task/create/{parentBoxId}/{taskTitle}/{taskDescription}", method=RequestMethod.GET) 
    public @ResponseBody Map<String, Object> createTask(ModelMap model, 
       @PathVariable(value="parentBoxId") String parentBoxId, 
       @PathVariable(value="taskTitle") String taskTitle, 
       @PathVariable(value="taskDescription") String taskDescription) { 

    Map<String, Object> result = new HashMap<String, Object>(); 

    Tasks taskToBeReturned = null; 
    Tasks task = new Tasks(); 
    task.setTitle(taskTitle); 
    task.setDescription(taskDescription); 
    Boxes parentBox = (Boxes)(boxService.getBoxById(Long.valueOf(parentBoxId))).getObject(); 
    taskService.setParent(task, parentBox); 
    result = taskService.save(task); 

    if(result.getIsSuccessful()){ 
     model.put("successMessages", result.getMessageList()); 
     Tasks savedTask = (Tasks)result.getObject(); 
     System.out.println("box saved title was " + savedTask.getTitle()); 
     taskToBeReturned = new Tasks(); 
     taskToBeReturned.setTitle(savedTask.getTitle()); 
     taskToBeReturned.setId(savedTask.getId()); 
     taskToBeReturned.setDescription(savedTask.getDescription()); 

    }else{ 
     model.put("errorMessages", result.getMessageList()); 
    } 

    result.put("task", taskToBeReturned); 
    result.put("model", model); // Add the model if needed 
    return result; 
} 
반환
관련 문제