Java 将html表单中的日期参数发送到thymeleaf中的控制器

Java 将html表单中的日期参数发送到thymeleaf中的控制器,java,spring,spring-mvc,thymeleaf,Java,Spring,Spring Mvc,Thymeleaf,在将日期传递给控制器时,我面临以下问题,如果我删除了日期,则其工作正常 我的html代码是 <div class="form-group" id="all"> <label class="col-lg-2 control-label" for="focusedInput3">Start date</label> <div class="col-lg-10"> <input type="date" id="sta

在将日期传递给控制器时,我面临以下问题,如果我删除了日期,则其工作正常

我的html代码是

<div class="form-group" id="all">
    <label class="col-lg-2 control-label" for="focusedInput3">Start date</label>
    <div class="col-lg-10">
        <input type="date" id="startDate" name="startDate" th:value="*{startDate}" />
    </div>
</div>
<div class="form-group" id="all">
    <label class="col-lg-2 control-label" for="focusedInput4">End date</label>
    <div class="col-lg-10">
        <input type="date" id="endDate" name="endDate" th:value="*{endDate}" />
    </div>
</div>
单击“提交”按钮后,出现以下错误:

这是我的控制器

@Controller
@RequestMapping("/admin")
public class CourseScheduleController {

@Autowired
private CourseScheduleService courseScheduleService; 

@RequestMapping("/createCourse")
public ModelAndView getAllativities() {
    Map<String, Object> model = new HashMap<String, Object>();
    model.put("courseName", "");
    model.put("semister", "");
    model.put("startDate",null);
    model.put("endDate",null);
    return new ModelAndView("createCourse",model);
}

@RequestMapping("/saveCourse")
public String saveCourseSchedule(@ModelAttribute CourseBE courseBE){
    courseScheduleService.saveCourseSchedule(courseBE);
    return "redirect:/admin/createCourse";
}
@控制器
@请求映射(“/admin”)
公共课程时间表控制器{
@自动连线
私人课程时间表服务课程时间表服务;
@请求映射(“/createCourse”)
公共模型和视图GetAllActivities(){
映射模型=新的HashMap();
模型.put(“courseName”,下称“);
模型。put(“semister”和“);
model.put(“起始日期”,空);
model.put(“endDate”,空);
返回新模型和视图(“createCourse”,模型);
}
@请求映射(“/saveCourse”)
公共字符串saveCourseSchedule(@ModelAttribute CourseBE CourseBE){
courseScheduleService.saveCourseSchedule(courseBE);
返回“重定向:/admin/createCourse”;
}

请帮助我解决此问题。

也许您应该在控制器上包括一个活页夹:

@InitBinder
    public void initBinder(WebDataBinder dataBinder) {
        dataBinder.setDisallowedFields("id");

        dataBinder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
            @Override
            public void setAsText(String value) {
                try {
                    setValue(new SimpleDateFormat("dd/MM/yyyy").parse(value));
                } catch (ParseException e) {
                    setValue(null);
                }
            }
        });

    }

在控制器中添加活页夹将允许从表单绑定到模型

 @InitBinder
 public void initDateBinder(final WebDataBinder binder) {
        binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-mm-dd"), true));
 }
应该这样做,并将表单中的输入字符串转换为日期

如果您使用的是
input type=“date”
,我想您将别无选择。 如果您想在模式中获得更大的灵活性,只需将输入类型更改为文本类型,并根据需要调整格式的模式即可

您应该在html标记中使用th:字段来绑定到mork,如:

<input th:field="*{startDate}"
添加以下内容:

logging.level.org.springframework.web=DEBUG

@Temporal(TemporalType.TIMESTAMP)@DateTimeFormat(pattern=“dd MMM YYYY”)
替换为
@Temporal(TemporalType.DATE)
是否可以发送控制器类(映射方法)?@s.kwiotek,发布了控制器类@Abel Roussi.chname,但结果是相同的错误为什么使用
*{…}
操作符而不是
${…}
?…显示整个html文件(提交按钮在哪里?)和thymeleaf模板的名称(是
createCourse.html吗?
)。。
<input th:field="*{startDate}"
logging.level.org.springframework.web=DEBUG