美好的一天,
我创建了将在全球范围内使用的Web应用程序服务。
因此,我需要将日期时间值存储在UTC中,并以墙上时间的时钟表示给最终用户。
读完堆栈溢出后,我知道应该:
在这些值之间转换时出现了问题。
使用JDBC时,必须进行以下转换:
java.sql.Timestamp <-> java.time.ZonedDateTime
Run Code Online (Sandbox Code Playgroud)
我的代码:
// Get current zonedDateTime
ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneOffset.UTC);
// Convert zonedDateTime to java.sql.Timestamp before saving to DB
Timestamp = Timestamp.from(zonedDateTime.toInstant());
// Get zonedDateTime from resultSet
Timestamp timestamp = (Timestamp) resultSet.getObject("created");
ZonedDateTime zonedDateTime =
ZonedDateTime.ofInstant(ts.toInstant(), ZoneOffset.UTC))
Run Code Online (Sandbox Code Playgroud)
当我使用时:
zonedDateTimeBeforeSave.isEqual(zonedDateTimeAfterSave);
Run Code Online (Sandbox Code Playgroud)
它返回false(我需要在我的域模型的重写的equal方法中将它们进行比较)
下面两种打印出来:
zonedDateTimeBeforeSave:2017-01-24T20:18:17.720Z
zonedDateTimeAfterSave:2017-01-24T20:18:17Z
问题:
谢谢
我刚刚开始学习Spring并坚持使用表单验证(有dao/service和所有默认设置)
我尝试进行验证任务,以防止在字段中插入超过3个符号
@Size (min = 1, max = 3)
Run Code Online (Sandbox Code Playgroud)
之后我想将表单数据插入到DB并将其输出到我的主页上,当数据满足我的验证并且由1到3个符号组成时,一切正常,但是当这些条件不满足时我尝试插入4或者更多的符号,我收到了HTTP STATUS 400.没有DB插入,也没有视图输出.所以我理解有验证,但我不明白为什么它会告诉我HTTP STATUS 400
@Controller
public class BookController {
@Autowired
private BookService bookService;
@RequestMapping(value = "addBook", method = RequestMethod.GET)
public String addUser(Model model) {
model.addAttribute("user", new ValidationField());
model.addAttribute("book", new Book());
return "addBook";
}
@RequestMapping(value = "addBook", method = RequestMethod.POST)
public String addBook( @ModelAttribute("user") @Valid ValidationField validationField, Book book, BindingResult result) {
/*this.user(book, result);*/
if (result.hasErrors()) {
return "addBook";
}
this.bookService.addBook(book);
return "redirect:/";
}
}
Run Code Online (Sandbox Code Playgroud)
验证类
public class …Run Code Online (Sandbox Code Playgroud)