IT story

Spring MVC Controller에 대한 GET 요청에서 날짜 매개 변수를 수락하는 방법은 무엇입니까?

hot-time 2020. 7. 27. 07:27
반응형

Spring MVC Controller에 대한 GET 요청에서 날짜 매개 변수를 수락하는 방법은 무엇입니까?


YYYY-MM-DD 형식의 날짜를 스프링 컨트롤러에 보내는 GET 요청이 있습니다. 컨트롤러 코드는 다음과 같습니다.

@RequestMapping(value="/fetch" , method=RequestMethod.GET)
    public @ResponseBody String fetchResult(@RequestParam("from") Date fromDate) {
        //Content goes here
    }

Firebug로 확인하면서 요청이 올바르게 전송됩니다. 오류가 발생합니다.

HTTP 상태 400 : 클라이언트가 보낸 요청이 구문 상 올바르지 않습니다.

컨트롤러가이 형식의 날짜를 수락하도록하려면 어떻게해야합니까? 도와주세요. 내가 뭘 잘못하고 있죠?


좋아, 나는 그것을 해결했다. 하루 종일 논스톱 코딩 후 피곤하고 어리석은 일을 그리워하는 사람을 위해 작성하십시오.

@RequestMapping(value="/fetch" , method=RequestMethod.GET)
    public @ResponseBody String fetchResult(@RequestParam("from") @DateTimeFormat(pattern="yyyy-MM-dd") Date fromDate) {
        //Content goes here
    }

예, 간단합니다. DateTimeFormat 주석을 추가하십시오.


이것은 프론트 엔드에서 날짜 형식을 얻으려고했던 것입니다.

  @RequestMapping(value = "/{dateString}", method = RequestMethod.GET)
  @ResponseBody
  public HttpStatus getSomething(@PathVariable @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) String dateString) {
   return OK;
  }

그것을 사용하여 원하는 것을 얻을 수 있습니다.


... 또는 올바른 방법으로 응용 프로그램 전체에서 날짜의 직렬화 / 역 직렬화에 대한 일관된 규칙을 가질 수 있습니다. 이것을 application.properties에 넣으십시오.

spring.mvc.date-format=yyyy-MM-dd

PathVariable을 사용하려면 아래 예제 메소드를 사용할 수 있습니다 (모든 메소드는 동일하고 동일 함).

//You can consume the path .../users/added-since1/2019-04-25
@GetMapping("/users/added-since1/{since}")
public String userAddedSince1(@PathVariable("since") @DateTimeFormat(pattern = "yyyy-MM-dd") Date since) {
    return "Date: " + since.toString(); //The output is "Date: Thu Apr 25 00:00:00 COT 2019"
}

//You can consume the path .../users/added-since2/2019-04-25
@RequestMapping("/users/added-since2/{since}")
public String userAddedSince2(@PathVariable("since") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date since) {
    return "Date: " + since.toString(); //The output is "Date: Wed Apr 24 19:00:00 COT 2019"
}

//You can consume the path .../users/added-since3/2019-04-25
@RequestMapping("/users/added-since3/{since}")
public String userAddedSince3(@PathVariable("since") @DateTimeFormat(pattern = "yyyy-MM-dd") Date since) {
    return "Date: " + since.toString(); //The output is "Date: Thu Apr 25 00:00:00 COT 2019"
}

참고 : https://stackoverflow.com/questions/15164864/how-to-accept-date-params-in-a-get-request-to-spring-mvc-controller

반응형