2017-05-01 14 views
1

조언이 필요합니다. 나는 Spring 프레임 워크에 너무 좋지 않다. 그리고 나는 당신에게 간단한 질문을하고 싶다. @RequestBody 주석 아래에서 1 필드 만 개체를 ​​가져올 수 있습니까?

나는 서버 측에 다음 POJO 객체가 : 그것은 모든 getter 및 setter를 포함

@Entity 
@Table(name = "AutoRate") 
public class AutoService { 

    public AutoService() { 
    } 

    @Id 
    @GeneratedValue(generator = "increment") 
    @GenericGenerator(name = "increment", strategy = "increment") 
    private long id; 

    @Column(name = "serviceName", nullable = false) 
    private String serviceName; 

    @Column(name = "imageURL", nullable = false) 
    private String imageURL; 

    @Column(name = "mapCoordinate", nullable = false) 
    private String mapCoordinate; 

    @Column(name = "websiteURL", nullable = false) 
    private String websiteURL; 

    @Column(name = "phoneNumber", nullable = false) 
    private String phoneNumber; 

    @JsonManagedReference 
    @OneToMany(mappedBy = "autoService", fetch = FetchType.EAGER, cascade = CascadeType.PERSIST) 
    private List<Service> services = new ArrayList<Service>();} 

; 나는 공간을 절약하고 싶다.

다음 : 클라이언트 용 데이터베이스에서 1 개체를 가져오고 데이터베이스의 변수 serviceName 만 사용하여 작업을 수행하려고합니다.

@RequestMapping(value = "/getAutoService", method = RequestMethod.GET) 
    @ResponseBody 
    public AutoService getAutoService(@RequestBody String serviceName){ 
     AutoService autoService = dataBaseService.getByName(serviceName); 
     return autoService; 
    } 

클라이언트에서 호출 후 나는 다음 오류가 발생합니다 : :

117899 [http-apr-8080-exec-1] WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public com.webserverconfig.user.entity.AutoService com.webserverconfig.user.controller.ServiceController.getAutoService(com.webserverconfig.user.entity.AutoService) 

내가 잘못 @RequestBody 주석을 사용하고 있다고 생각

나는 다음 컨트롤러 방법이있다.

누구든지 조언을 줄 수 있습니까?

답변

2

HTTP 문자열이 아닌 쿼리 문자열에 데이터를 전달하는 GET 메서드를 사용하고 있습니다. POST 메서드는 HTTP 메시지를 본문에 전달합니다.

따라서 @RequestBody 주석을 사용하는 것이 옳지 않으므로 @PathVariable을 사용해보십시오.

@RequestBody annotation은 HTTP 본문 메시지의 데이터를 method 매개 변수에 바인딩하려고한다는 것을 나타냅니다.

+0

답변 해 주셔서 감사합니다. 나는 그것을 시도 할 것이다. – Andrew

+0

내 대답이 도움이 되었습니까? 문제가 해결 되었습니까? @ 앤드류 –