当前位置: 首页 > 知识库问答 >
问题:

Tymeleaf发送的日期始终为空

尤钱明
2023-03-14

这是我的html表单

<form ui-jp="parsley" th:action="@{/users/created}" th:object="${userCreateDto}" method="post">
    <div class="row m-b">
        <div class="col-sm-6">
            <div class="form-group">
                <label>User Valid From</label>
                <input type='date' class="form-control" th:field="*{validFrom}" required/>
            </div>
        </div>
        <div class="col-sm-6">
            <div class="form-group">
                <label>User Valid To</label>
                <input type='date' class="form-control" th:field="*{validTill}" required/>
            </div>
        </div>
    </div>
</form>
@RequestMapping(value = "/created", method = RequestMethod.POST)
public String processCreateUsers(@ModelAttribute UserCreateDto userCreateDto, BindingResult error) {
    log.info("Creating users with this input :"+ userCreateDto.toString());
    this.userService.createUser(userCreateDto);
    return "redirect:/users";
}

这是DTO

public class UserCreateDto {

    private String username;

    private String firstName;

    private String lastName;

    private String password;

    @DateTimeFormat(pattern = "yyyy-mm-dd")
    private Date validFrom;

    @DateTimeFormat(pattern = "yyyy-mm-dd")
    private Date validTill;
}

这里的日期是java.sql.Date

此外,当我导入一个JSON文件时,我有一个用户数组,我能够成功地运行它。

Failed to convert property value of type 'java.lang.String' to required type 'java.sql.Date' for property 'validFrom'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@org.springframework.format.annotation.DateTimeFormat java.sql.Date] for value '2017-12-10'; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [org.joda.time.DateTime] to type [@org.springframework.format.annotation.DateTimeFormat java.sql.Date]

我错过了什么?

注意:java.util.date起作用!

共有1个答案

方和宜
2023-03-14

表单需要有一个bean来绑定这些参数。您可以使用@getmapping(和@postmapping)作为速记。

@GetMapping("/theHtmlFormInYourQuestion")
public String createUsers(Model model) {

    model.addAttribute("userCreateDto", new UserCreateDto());
    return "theHtmlFormInYourQuestion";
}

您的表单操作应该使用created而不是users/created,因为这正是您的Java代码所显示的(除非您正在做的其他事情没有在您的问题中发布)。

 类似资料:
  • 我正在使用JavaJDBC将日期写入SQLServer2008,然后将其读回 读回的日期始终比实际写入的日期早两天。 我正在插入包含日期字段的行,其中包含准备好的语句。日期值由以下人员提供: 将日期写入数据库后,如果我运行以下命令,SQL server将显示正确的日期: 如果我通过JDBC运行相同的查询,然后使用以下方法从结果集中检索日期值 插入的行是表中唯一具有非空日期的行,因此这似乎不是读取错

  • 我是Android的新手,现在我在做一个应用,这个应用我需要把数据发送到服务器上,现在我用的是Volley post方法,但是当我用Volley发送数据到服务器上的时候,参数总是显示为空,这里我附上了代码,请检查一下,这里我用的是片段。

  • 问题内容: 我想将我的PHP服务器时间传递给我的JavaScript文件。 PHP代码: JavaScript: PHP代码返回2012年3月18日星期日12:01:23 +0800,这是澳大利亚/珀斯的正确时间。但这会返回无效的JavaScript日期对象。 当我尝试将其转换为时间戳时: 我得到了JavaScript日期2012年3月18日,星期日04:03:14 GMT + 0000(WET)

  • HTTPProxyHandler总是发送连接请求是正确的吗?这不是只在你想做隧道的时候才适用吗?

  • 问题内容: 我正在使用Java JDBC将日期写到SQL Server 2008,然后将其读回。 回读的日期始终比实际写入的日期早两天。 我正在使用准备好的语句插入包含Date字段的行。日期值由以下人员提供: 将日期写入数据库后,如果运行,SQL Server将向我显示正确的日期: 如果我通过JDBC运行相同的查询,则使用以下命令从结果集中检索日期值 插入的行是表中唯一具有非空日期的行,因此这似乎

  • 我开发了一个Android应用程序,提示日历应用程序编辑事件。 我使用打开日历。编辑并保存事件后,在中始终为0。 无论我在日历应用程序中单击“保存”还是“取消”,总是给出0。 另外,我需要从日历intent中获取数据,但是onActivityResult中的intent“data”也返回null。 有人能解释为什么会这样吗?有没有办法知道用户点击“保存”还是“取消”?