YYYY-MM-DD 형식의 날짜를 Spring 컨트롤러에 보내는 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
답변
아래 솔루션은 봄 부팅 응용 프로그램에서 완벽하게 작동합니다.
제어 장치:
@GetMapping("user/getAllInactiveUsers")
List<User> getAllInactiveUsers(@RequestParam("date") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date dateTime) {
return userRepository.getAllInactiveUsers(dateTime);
}
따라서 호출자 (내 경우에는 웹 플럭스)에서이 ( “yyyy-MM-dd HH : mm : ss” ) 형식으로 날짜 시간을 전달해야 합니다.
발신자 측 :
public Flux<UserDto> getAllInactiveUsers(String dateTime) {
Flux<UserDto> userDto = RegistryDBService.getDbWebClient(dbServiceUrl).get()
.uri("/user/getAllInactiveUsers?date={dateTime}", dateTime).retrieve()
.bodyToFlux(User.class).map(UserDto::of);
return userDto;
}
저장소:
@Query("SELECT u from User u where u.validLoginDate < ?1 AND u.invalidLoginDate < ?1 and u.status!='LOCKED'")
List<User> getAllInactiveUsers(Date dateTime);
건배!!
답변
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"
}