从表单提交时,日期时间格式批注不适用于"hh:mm"



首先,当我使用@DateTimeFormat(pattern = "HH:mm")时,这段代码是工作的。但是一旦我把它换成@DateTimeFormat(pattern = "hh:mm"),它就停止工作了。我对春天很陌生,所以我不确定问题是从哪里来的。我想做的就是为我的数据库节省时间。

错误:

Failed to convert from type [java.lang.String] to type [@org.springframework.format.annotation.DateTimeFormat java.time.LocalTime] for value '12:00';

这是我要映射到形式的对象:

@Entity
@Table(name = "Schedule")
@NoArgsConstructor
@Getter
@Setter
public class Schedule {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@DateTimeFormat(pattern = "hh:mm")
private LocalTime startTime;
@DateTimeFormat(pattern = "hh:mm")
private LocalTime endTime;
@Column(name = "days")
private String days;
public Schedule(LocalTime startTime, LocalTime endTime, String days) {
this.startTime = startTime;
this.endTime = endTime;
this.days = days;
}
}

这是我的控制器

@Controller
@RequestMapping("/schedules")
@AllArgsConstructor
public class WebScheduleController {

ScheduleService scheduleService;
@GetMapping
public String getSchedules(Model model) {
List<Schedule> schedules = scheduleService.getSchedules();
model.addAttribute("scheduleList", schedules);
model.addAttribute("schedule", new Schedule());
return "schedules";
}
@PostMapping
public String createSchedule(@ModelAttribute("schedule") Schedule schedule,Model model ){
scheduleService.createSchedule(schedule);
return "redirect:/schedules/";
}

}

这是HTML表单:

<form method="post" th:action="@{/schedules}" th:object="${schedule}" class="col card p-3 mb-5">
<div class="form-group">
<label for="startTime">Start time</label>
<input id="startTime" placeholder="Enter start time" required type="time" th:field="*{startTime}"/>
</div>
<div class="form-group">
<label for="endTime">End time</label>
<input id="endTime" placeholder="Enter end time" required type="time" th:field="*{endTime}" />
</div>
<div class="form-group">
<label for="days">Days</label>
<input id="days" placeholder="Enter days" required type="text" th:field="*{days}" />
</div>
<input type="submit" class="btn btn-primary" value="Create Schedule">
</form>

是否尝试删除am/pm?也许这个字符串am/pm也试图成为发送数据时的时间的一部分。

你的数据库不允许字符串在日期。

最新更新