如何使用Java Spring MVC修复此程序?我想在数据库中输入包含日期的数据,但是显示错误。我该如何解决?
这是我在实体
中的代码@Entity
@Table(name ="tb_transaksi_penjualan")
public class TransaksiPenjualan {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String customer;
@DateTimeFormat(pattern ="MM/dd/yyyy")
private Date tanggal;
private String barang;
private int jumlah;
private int harga;
private int total;
private Long customer_id;
private Long barang_id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getCustomer() {
return customer;
}
public void setCustomer(String customer) {
this.customer = customer;
}
public Date getTanggal() {
return tanggal;
}
public void setTanggal(Date tanggal) {
this.tanggal = tanggal;
}
public String getBarang() {
return barang;
}
public void setBarang(String barang) {
this.barang = barang;
}
public int getJumlah() {
return jumlah;
}
public void setJumlah(int jumlah) {
this.jumlah = jumlah;
}
public int getHarga() {
return harga;
}
public void setHarga(int harga) {
this.harga = harga;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public Long getCustomer_id() {
return customer_id;
}
public void setCustomer_id(Long customer_id) {
this.customer_id = customer_id;
}
public Long getBarang_id() {
return barang_id;
}
public void setBarang_id(Long barang_id) {
this.barang_id = barang_id;
}
}
这是我来自 controller
的代码@Controller
@RequestMapping("/transaksipembelian/save")
public class TransaksiPembelianSaveController {
@Autowired
private TransaksiPembelianRepository transaksiPembelianRepository;
@ModelAttribute("transaksipembelian")
private TransaksiPembelian getTransaksiPembelian(@RequestParam(value="id", required = false) Long id)
{
if(id==null)
return new TransaksiPembelian();
else
return transaksiPembelianRepository.findById(id).orElse(null);
}
@RequestMapping(method = RequestMethod.GET)
public String form() {
return "tambahtransaksipembelian";
}
@RequestMapping(method = RequestMethod.POST)
public String submit(@ModelAttribute("transaksipembelian") TransaksiPembelian transaksipembelian ) {
System.out.println(transaksipembelian.toString());
transaksiPembelianRepository.save(transaksipembelian);
return "redirect:/transaksipembelian";
}
}
这是来自错误的消息:
字段“ tanggal”上的对象“ transaksipenjualan”中的字段错误: 拒绝价值[2019-07-15];码 [typeMismatch.transaksipenjualan.tanggal,typeMismatch.tanggal,typeMismatch.java.util.Date,typeMismatch]; 论点 [org.springframework.context.support.DefaultMessageSourceResolvable: 代码[transaksipenjualan.tanggal,tanggal];参数[];默认 消息[tanggal]];默认消息[无法转换属性值 类型“ java.lang.String”的必需类型为“ java.util.Date” 财产'tanggal';嵌套异常为 org.springframework.core.convert.ConversionFailedException:失败 从类型[java.lang.String]转换为类型 [@ org.springframework.format.annotation.DateTimeFormat java.util.Date] 价值'2019-07-15';嵌套异常为 java.lang.IllegalArgumentException:尝试解析值失败 [2019-07-15]]]
答案 0 :(得分:1)
您看到的错误消息似乎是您试图使用TransaksiPenjualan
中tanggal
的原义日期字符串来保存/创建2019-07-15
实体。基于@DateTimeFormat
批注,您应该使用格式MM/dd/yyyy
。
您可以通过输入文字07/15/2019
来解决此问题。
答案 1 :(得分:0)
您已为tanggal
字段提供了日期格式为MM/dd/yyyy
,但您正在提供2019-07-15
。将模式更改为yyyy-MM-dd
或将提供的值更改为07/15/2019
。
答案 2 :(得分:-1)
您应将 2019-07-15 的值格式更改为 07/15/2019 。因为,您使用@DateTimeFormat(pattern ="MM/dd/yyyy")
此注释来格式化 tanggal 。