输入类型=“日期”百里香
我需要向我的实体添加日期,并让用户以webforms设置它。 默认情况下,此字段需要填写今天的日期。
1.
显示为默认设置的正确日期
2.
显示没有任何值的日期选择器(注意:String startDate =“2016-08-01”;)
3.
生成400错误(错误请求)(注意:日期startDate = new Date();)
所以,问题是:如何使用百日咳作为输入日期?
- 我可以使用Date()数据类型输入和存储这些数据吗?
- 我怎么需要在表格中设置“th:field”?
- 我怎么需要以相同的forms设置“th:value”?
我的控制器:
@RequestMapping("/project_new") public String createProject(Model model) { Project project = new Project (); List roles = mRoleService.findAll(); project.setStart(new Date()); model.addAttribute("page_title", "create project"); model.addAttribute("roles", roles); model.addAttribute("statuses", Status.values()); model.addAttribute("project", project); return "project_new"; } @RequestMapping(value = "/project_new", method = RequestMethod.POST) public String createProject(@ModelAttribute Project project, Model model) { // Fill id field for project.rolesNeeded mRoleService.setRolesId(project.getRolesNeeded()); project.fixCollaboratorsAndRoles(); mProjectService.save(project); return "redirect:/"; }
我的模板:
项目实体:
@Entity public class Project { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NotNull @Size (min = 3) private String name; @Column(columnDefinition="TEXT") private String description; @Column private Status status; @Column private Date start; @ManyToMany @LazyCollection(LazyCollectionOption.FALSE) private List rolesNeeded; @ManyToMany @LazyCollection(LazyCollectionOption.FALSE) private List collaborators; public Date getStart() { return start; } public void setStart(Date start) { this.start = start; }
看一下带有错误日志的注释,它似乎是String到java.util.Date之间的转换问题。 在Thymeleaf GitHub中搜索了一段时间后,我看到了两个可以解释如何在这种情况下继续进行的问题:
- 讨论转换,包括本期中的日期。
- 这里解释了转换的实现。
从最后一点开始,我在项目类的开始日期添加了一个注释:
// This is "org.springframework.format.annotation.DateTimeFormat" @DateTimeFormat(pattern = "yyyy-MM-dd") private Date start;
之后,我能够在您的控制器POST方法中收到日期。
考虑到你还需要从模板中将“th:value”和“th:field”属性从$ {project.start}更改为* {start},正如我在评论中所写的那样名称和描述字段。