Spring boot 无法转换类型为';java.lang.String';至所需类型';java.util.Date';对于不动产';添加日期

Spring boot 无法转换类型为';java.lang.String';至所需类型';java.util.Date';对于不动产';添加日期,spring-boot,hibernate,Spring Boot,Hibernate,模型类 public interface WatchlistService { Watchlist saveWatchlist(Watchlist watchlist); void deleteWatchlist(Watchlist watchlist); List<Watchlist> getAllWatchlist(); } @实体 公共类观察列表{ @Id private String scrip_name; @Te

模型类

public interface WatchlistService {
    
    Watchlist saveWatchlist(Watchlist watchlist);
    void deleteWatchlist(Watchlist watchlist);
    List<Watchlist> getAllWatchlist();

}
@实体 公共类观察列表{

    @Id
    private String scrip_name;
    @Temporal(TemporalType.DATE)
    @DateTimeFormat(pattern = "MM/dd/yyyy")
    private Date date_added; 
    private double recom_price;  // recommended price
    private double stop_loss;
    private double curr_price;   // current price
    private double lmar;  // low made after recommended price
    Getters and Setters and toostring   
}
服务等级

public interface WatchlistService {
    
    Watchlist saveWatchlist(Watchlist watchlist);
    void deleteWatchlist(Watchlist watchlist);
    List<Watchlist> getAllWatchlist();

}
我试图从jsp中输入日期并插入mysql

下面是jsp文件中的代码片段

Date Added:<input type="date" name="date_added"/>
添加日期:
注释部分日志中的异常与日期解析相关

嵌套异常为java.lang.IllegalArgumentException:无法 解析日期:不可解析日期:]

来自jsp的日期字符串似乎不是initBinder中定义的格式

您需要确保格式相同

仅出于测试目的,将后端日期格式更改为与jsp相同的格式,并检查其是否有效

您发送的格式为2020-09-19

initBinder中的格式为MM/dd/yyyy 09-19-2020


所以很明显,它不起作用。更改其中任何一个方面的格式,它就会起作用。

请在您的问题中添加一些详细信息,例如异常及其堆栈跟踪。确保您从JSP获取的日期格式与您在此处声明的格式相同
SimpleDateFormat dateFormat=new SimpleDateFormat(“MM/dd/yyyy”)
else共享异常和堆栈跟踪。字段“date_added”上对象“watchlist”中的字段错误:拒绝值[2020-09-19];代码[typeMismatch.watchlist.date_added,typeMismatch.date_added,typeMismatch.java.util.date,typeMismatch];参数[org.springframework.context.support.DefaultMessageSourceResolvable:codes[watchlist.date_added,date_added];参数[];默认消息[date_added];默认消息[未能将类型为“java.lang.String”的属性值转换为属性“date_added”所需的类型“java.util.date”;嵌套异常为java.lang.IllegalArgumentException:无法分析日期:不可解析的日期:]尝试像这样传递字段
webDataBinder.registerCustomEditor(Date.class,“Date_added”,new CustomDateEditor(dateFormat,true));
如果不起作用,则更改:
@DateTimeFormat(pattern=“MM/dd/yyyyy”)
到@DateTimeFormat(pattern=“yyyyy-MM-dd”)它已经存在@InitBinder public void InitBinder(WebDataBinder WebDataBinder){SimpleDataFormat dateFormat=new SimpleDataFormat(“MM/dd/yyyy”);WebDataBinder.registerCustomEditor(Date.class,new CustomDateEditor(dateFormat,true));}它已经存在于控制器中,我还需要在@InitBinder public void InitBinder(WebDataBinder WebDataBinder)中更改其他内容吗{SimpleDataFormat dateFormat=new SimpleDataFormat(“MM/dd/yyyy”);webDataBinder.registerCustomEditor(Date.class,new CustomDateEditor(dateFormat,true));}