我在将日期传递给控制器时面临以下问题,如果我删除了日期,那么它的工作正常。
我的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>
我的实体类是
@Column(name = "name")
private String courseName;
@Column(name = "semister")
private String semister;
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat (pattern="dd-MMM-YYYY")
@Column(name = "startDate")
private Date startDate;
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat (pattern="dd-MMM-YYYY")
@Column(name = "endDate")
private Date endDate;
单击“提交”按钮后,会出现以下错误:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Fri Apr 24 14:05:33 IST 2015
There was an unexpected error (type=Not Found, status=404).
No message available
这是我的控制器
@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";
}
请帮我解决这个问题。
答案 0 :(得分:0)
也许你应该在控制器上包含一个活页夹:
@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);
}
}
});
}
答案 1 :(得分:0)
在控制器中添加活页夹将允许从表单到模型的绑定。
@InitBinder
public void initDateBinder(final WebDataBinder binder) {
binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-mm-dd"), true));
}
应该知道并在日期转换表单中的输入字符串。
如果您使用input type="date"
我认为您在pattern date中别无选择。
如果您希望模式具有更大的灵活性,只需将输入类型更改为文本类型,并将格式的模式调整为您喜欢的模式。
你应该在你的html标记中使用th:field来绑定到mork,如:
<input th:field="*{startDate}"
并确保您的表单具有类似<form th:object="${courseBE}"
的内容,以定义用于绑定表单的bean用法。
答案 2 :(得分:0)
添加以下内容:
logging.level.org.springframework.web=DEBUG
到属性文件。它将有助于详细记录HTTP错误。