为了账号安全,请及时绑定邮箱和手机立即绑定

提交表单时,带有日期/时间的 Spring 为空

提交表单时,带有日期/时间的 Spring 为空

叮当猫咪 2023-04-19 16:37:59
我的控制器中有两个映射。这是一个 GET 映射:@RequestMapping(value="/items/book-list/edit", method = RequestMethod.GET)public String showEditBookPage(@RequestParam Long id, ModelMap model){    Book book = bookService.findBookById(id);    model.addAttribute("editForm", book);    LOG.info("Logged modified date once page is loaded: " + book.getModifyDate());    return "admin/book";}此映射仅用于显示小窗体的 book.jsp 页面。我还有另一个具有相同值但使用 POST 方法的映射,用于提交表单。 @RequestMapping(value="/items/book-list/edit", method = RequestMethod.POST)public String updateBook(@ModelAttribute("editForm") @Valid Book bookForm, BindingResult result, ModelMap model){    if(result.hasErrors()){        return "/admin/book";    }    LOG.info("Logged modified date before Save object: " + bookForm.getModifyDate());    LOG.info("Logged author before Save object: " + bookForm.getAuthor());    bookService.saveBook(bookForm);    LOG.info("Logged modified date after Save object: " + bookForm.getModifyDate());    LOG.info("Logged author after Save object: " + bookForm.getAuthor());    return "admin/book";}我的书.jsp:<form:form method="post" modelAttribute="editForm" >        <div class="row border py-4">            <div class="col-sm-6">                <spring:bind path="title">                    <div class="form-group">                        <form:label path="title" for="title">Book title</form:label>                        <form:input path="title" type="text" class="form-control" id="title" cssErrorClass="form-control border border-danger"/>                    </div>            </div>    </form:form>
查看完整描述

3 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

尝试为该LocalDateTime字段显式添加反序列化器:


@JsonDeserialize(using = LocalDateTimeDeserializer.class)  

@CreationTimestamp

@Column(name="create_date", updatable = false, nullable = false)

private LocalDateTime createDate;

还有你的反序列化类:


public class LocalDateTimeDeserializer extends StdDeserializer<LocalDateTime> {


    @Override

    public LocalDate deserialize(JsonParser jsonParser, DeserializationContext ctx)

            throws IOException, JsonProcessingException {

        // parse the String date into LocalDateTime object as it fits you

    }


}


查看完整回答
反对 回复 2023-04-19
?
UYOU

TA贡献1878条经验 获得超4个赞

您忘记在 My book.jsp: 中添加 modify_date 字段,因为只有字段日期会发布,因为它是新请求,而您保存在模型中的所有旧字段都不会随请求一起发布。所以有两个选项添加输入文本字段来更改日期。


或者您将在保存之前手动设置日期


 bookForm.setModifyDate(new Date());

 bookService.saveBook(bookForm); 

或者你也可以添加 @UpdateTimestamp 如果你想加仑本地日期和时间


@UpdateTimestamp

private LocalDateTime modifyDate;


查看完整回答
反对 回复 2023-04-19
?
浮云间

TA贡献1829条经验 获得超4个赞

@UpdateTimestamp

private LocalDateTime modifyDate;

这将完成工作


查看完整回答
反对 回复 2023-04-19
  • 3 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信