【问题标题】:[Failed to convert property value of type 'java.lang.String' to required type 'java.sql.Time'[无法将类型“java.lang.String”的属性值转换为所需类型“java.sql.Time”
【发布时间】:2018-10-13 16:12:05
【问题描述】:

当我尝试向我的控制器发送表单时出现错误,出现以下错误:

[无法将“java.lang.String”类型的属性值转换为 字段“heureDebut”上的必需类型“java.sql.Time”“horaire”: 拒绝值 [10:00];代码 [typeMismatch.horaire.heureDebut,typeMismatch.heureDebut,typeMismatch.java.sql.Time,typeMismatch]

这是我的实体:

@Entity(name = "horaire")
public class Horaire {

    @Id @GeneratedValue
    @Column(name = "idhoraire")
    private Integer id;
    @Column(name = "heure_debut")
    private Time heureDebut;
    @Column(name = "heure_fin")
    private Time heureFin;


    public Horaire() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Time getHeureDebut() {
        return heureDebut;
    }

    public void setHeureDebut(Time heureDebut) {
        this.heureDebut = heureDebut;
    }

    public Time getHeureFin() {
        return heureFin;
    }

    public void setHeureFin(Time heureFin) {
        this.heureFin = heureFin;
    }

    @Override
    public String toString() {
        return "Horaire{" +
                "id=" + id +
                ", heureDebut=" + heureDebut +
                ", heureFin=" + heureFin +
                '}';
    }
}

这是我在控制器中的方法:

@GetMapping("/save")
public String saveHoraire(@Valid Horaire horaire) {

    horaireRepository.save(horaire);

    return "redirect:listeHoraire";

}

这是我的模板:

<form th:action="@{save}" method="get"  th:object="${horaire}">
    <input type="text"  th:field="*{id}">
    <input type="time"  th:field="*{heureDebut}">
    <input type="time"  th:field="*{heureFin}">
    <input type="submit" value="valider"/>
</form>

【问题讨论】:

    标签: java spring thymeleaf


    【解决方案1】:

    在您的实体类中使用 java.util.Date,如下所示,在数据库中使用 datetime

    @Column(name = "heure_debut")
    @Temporal(TemporalType.TIMESTAMP)
    private Date heureDebut;
    
    @Column(name = "heure_fin")
    @Temporal(TemporalType.TIMESTAMP)
    private Date heureFin;
    

    并使用 SimpleDateFormat 将字符串转换为 Date 对象

    String text = "25/02/1992";
    Date date = new SimpleDateFormat("DD/MM/YYYY").parse(text);
    

    【讨论】:

    • 字段 'heureFin' 上的对象 'horaire' 中的字段错误:拒绝值 [23:00];代码 [typeMismatch.horaire.heureFin,typeMismatch.heureFin,typeMismatch.java.util.Date,typeMismatch];参数 [org.springframework.context.support.DefaultMessageSourceResolvable:代码 [horaire.heureFin,heureFin];论据 [];默认消息 [heureFin]];默认消息 [无法将类型“java.lang.String”的属性值转换为属性“heureFin”所需的类型“java.util.Date”;
    • 您是否将 SimpleDateFormat 放入 setter 中?日期日期 = new SimpleDateFormat("DD/MM/YYYY").parse(text);
    猜你喜欢
    • 2021-06-13
    • 2017-05-12
    • 2018-08-21
    • 2017-04-21
    • 2021-01-23
    • 2017-06-14
    • 2016-07-15
    • 2019-06-20
    • 2014-07-05
    相关资源
    最近更新 更多