當郵遞員提出請求時,我需要檢查接收到的日期是否以“yyyy-mm-dd”格式有效,然后將其發送到我的服務。有沒有辦法用字串做到這一點?
例子:
我的控制器:
@GetMapping("/by-date")
public ResponseEntity<List<ResponseRet>> getByDate(@RequestParam(required = false) String dateGte,
@RequestParam(required = false) String dateLte) {
List<ResponseRet> responseRet = searchService.findByDate(dateGte, dateLte);
return ResponseEntity.ok(responseRet);
}
在這種情況下,我需要在控制器或服務中進行此檢查
uj5u.com熱心網友回復:
在您的服務類中,您可以嘗試決議String為LocalDate:
public List<ResponseRet> findByDate(String dateGte, String dateLte) {
try {
LocalDate.parse(dateGte);
LocalDate.parse(dateLte);
} catch (DateTimeParseException ex) {
// log, throw your custom exception with 400 http response code or whatever
}
// other code;
}
決議時,LocalDate使用默認DateTimeFormatter.ISO_LOCAL_DATE日期 - 如“2022-08-24”。
如果你想用其他格式決議,創建實體DateTimeFormatter并使用它:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/mm/dd");
LocalDate.parse(dateGte, formatter);
您還可以將方法的引數型別更改為LocalDate并在控制器級別進行驗證:
@GetMapping("/by-date")
public ResponseEntity<List<ResponseRet>> getByDate(
@RequestParam(required = false) @Valid @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate dateGte,
@RequestParam(required = false) @Valid @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate dateLte) {
List<ResponseRet> responseRet = searchService.findByDate(dateGte.toString(), dateLte.toString());
return ResponseEntity.ok(responseRet);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/505299.html
上一篇:這里聊聊掃地機的 IOT 開發
下一篇:嘗試提供影像時,如何解決Spring中“使用預設Content-Type'image/png'的[class[B]沒有轉換器”錯誤?
