【发布时间】:2018-02-01 17:31:56
【问题描述】:
如果我删除对日期的任何引用,表单会成功提交,但是当我包含日期字段时,我会收到以下错误:
出现意外错误(类型=错误请求,状态=400)。 object='film' 的验证失败。错误计数:1
我的代码如下:
addfilm.html
<form action="#" th:action="@{/film/addfilm}" th:object="${film}" method="post">
<p>Title:</p> <input type="text" th:field="*{title}"/>
<p>Director:</p> <input type="text" th:field="*{director}"/>
<p>Description:</p> <input type="text" th:field="*{description}"/>
<p>Release Date:</p> <input type="date" th:field="*{date}"/>
<p/><input type="submit" value="Add"/>
</form>
电影.java
package com.demo.spring.domain;
import java.util.Date;
public class Film {
String title;
String director;
String description;
Date date;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDirector() {
return director;
}
public void setDirector(String director) {
this.director = director;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
电影控制器
package com.demo.spring.controller;
import com.demo.spring.domain.Film;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping(value = "/film")
public class FilmController {
@RequestMapping(value = "/addfilm", method = RequestMethod.GET)
public String filmView(Model model)
{
Film film = new Film();
model.addAttribute("film", film);
return "addfilm";
}
@RequestMapping(value = "/addfilm", method = RequestMethod.POST)
@ResponseBody
public String film(Model model, @ModelAttribute("film") Film film)
{
return "This film was added to the database: "+film.getTitle()+" "+film.getDate();
}
}
家庭控制器
package com.demo.spring.controller;
import com.demo.spring.domain.Film;
import com.demo.spring.domain.User;
import com.demo.spring.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpSession;
import java.util.List;
@Controller
public class HomeController {
@Autowired
UserService userService;
@RequestMapping(value = "/", method = RequestMethod.GET )
// @ResponseBody
public String index(Model model, HttpSession session)
{
if(session.getAttribute("login")==null)
{
return "redirect:/user/login";
}
Film film = new Film();
model.addAttribute("film", film);
List<User> users = userService.findAll();
model.addAttribute("users",users);
return "index";
}
}
【问题讨论】:
-
您在模型中使用过
DateTimeFormat注释吗?如果是这样,您在客户端和后端使用什么模式?还粘贴您的模型并使用浏览器发出粘贴请求 -
这是我所有关于电影的代码,不知道还能给你什么?不确定我是否完全理解,但在后端我希望它需要 yyyy、mm、dd,但注意到如果我将输入类型设置为日期,它会变为 dd、mm、yyyy。不知道这是否会产生任何影响,所以也尝试作为文本字段但没有乐趣。
-
当我尝试添加日期时,它会提示 import java.util.Date;所以我做到了。如果我在这里误解,请原谅我,我是春天的新手。但是我了解 DateTimeFormat 但认为此导入涵盖了这一点。
-
可能接受的答案可能对您有所帮助:stackoverflow.com/questions/40259336/date-in-spring-mvc
-
谢谢@Boris 这很有魅力。你想作为答案,我会接受。