2017-11-28 3 views
2

내가 가진 컨트롤러 :봄 PUT 컨트롤러에 긴 전달하는 방법을

@RestController 
public class AdminController { 

    @PutMapping("/path/max_file_size") 
    public void setMaxFileSize(@ModelAttribute MaxFileSizeDto size) { 
     System.out.println(size.getSize()); 
    } 

    public static class MaxFileSizeDto { 
     private long size; 

     public long getSize() { 
      return size; 
     } 

     public void setSize(long size) { 
      this.size = size; 
     } 
    } 
} 

내가 포스트 enter image description here 남자와 HTPP 요청을 보내

을하지만 난 항상

size.getSize() 

0 얻을 것 내가 틀렸어?

+0

당신이'개인 긴 크기를 시도하십시오 할 수있을 것인가? 원시 객체가 아닌 원시 객체 사용 –

+0

@Ataur Rahman Munna이 경우 0 대신 null이 표시됩니다. RequestBody의 경우, – gstackoverflow

+0

@ shinjw입니다. 415 – gstackoverflow

답변

1

모델을 추가하기 전에 ModelController을 분리해야한다는 것을 기억해야합니다. 즉, 모델을 다른 패키지 또는 클래스에 보관하는 것입니다. 게시/퍼팅 할 때는 primitive (int, long 등) 대신 Object (String, Integer, Long)을 사용해야합니다. 당신이 다음 application/x-www-form-urlencoded로 데이터를 전송하는 경우

@RestController 
public class AdminController { 

    @PutMapping("/path/max_file_size") 
    public void setMaxFileSize(@ModelAttribute MaxFileSizeDto size) { 
     System.out.println(size.getSize()); 
    } 
} 

이 데이터가 전송됩니다 :

하면 컨트롤러 클래스가 될 것입니다

public static class MaxFileSizeDto { 
    private Long size; 

    public Long getSize() { 
     return size; 
    } 

    public void setSize(Long size) { 
     this.size = size; 
    } 
} 

그리고 당신의 모델 클래스

MaxFileSizeDto.java 가정 이 형식으로 직접 정의 된 클래스 @ModelAttribute에 바인딩합니다.

param1=data1&param2=data2&param3=data3 

그러나 우편 발송자는 내부적으로이 형식으로 데이터를 보냅니다. 데이터를 @RequestBody으로 보내려면 내용 유형이 application/json 인 json 데이터를 사용해야합니다. 그렇게하려면 우편 배달부에서 raw 라디오 버튼을 선택하고 application/json을 드롭 다운에서 선택해야합니다. 대신`개인 긴 크기의 (세터와 함께, 게터)`;`(행의 마지막 요소) 이러한 경우 데이터에

{ 
    "size":123456 
} 
+0

하지만 URL에 데이터를 전달하고 싶지 않고 json을 원하지 않는다면 – gstackoverflow

+0

URL에 데이터를 전달하면 안됩니다. 당신의'브라우저/http 리퀘 스터'는 내부적으로 그 변환을합니다. http 메시지를 검사하여 볼 수 있습니다. –

+0

양식 데이터로 이해하는 방법을 알고 있습니까? – gstackoverflow

관련 문제