gpt4 book ai didi

java - 支柱|类型转换错误

转载 作者:行者123 更新时间:2023-12-02 08:31:57 25 4
gpt4 key购买 nike

我试图通过 Hibernate 使用 struts 作为 Controller 以简单的形式保存数据,但问题是,当我提交表单时出现错误

Cannot invoke com.myapp.struts.form.EmployeeEditForm.setEmpdob - argument type mismatch

我认为这是因为类型冲突,因为表单字段(指出生日期字段)通常随请求传递一个字符串,但在我的 Form bean 中,类型指的是 Java 数据对象,所以我真正的情况是什么问题是我在哪里将该字符串键入到数据对象中。

来 self 的表单 bean 的片段

private Date empdob;

public void setEmplname(String emplname) {
this.emplname = emplname;
}

public Date getEmpdob() {
return empdob;
}

我的 Action 类

public ActionForward saveEmployee(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
EmployeeEditForm employeeEditForm = (EmployeeEditForm) form;
BusinessDao businessDao = new BusinessDao();
businessDao.saveEmployee(employeeEditForm.getEmp());
return mapping.findForward("showList");
}

BusinessDao is the DAO to the separation layer to the persistence layer.

谢谢。

最佳答案

您可以通过以下方式解决此问题:

1 - 有一个 String 的 setter 和一个 Date 的 getter(您可以在 setter 中将值从 String 转换为 Date);

private Date empdob;

public void setEmpdobString(String s) {
this.empdob = someDateFormatter.parse(s);
}

public Date getEmpdobDate() {
return empdob;
}

2 - 有两组 getter 和 setter,一对用于字符串,一对用于日期

   private Date empdob;  

public Date getEmpdobDate() {
return this.empdob;
}

public void setEmpdobDate(Date empdob) {
this.empdob = empdob;
}

public String getEmpdobString() {
return someDateFormatter.format(this.empdob);
}

public void setEmpdobString(String s) {
this.empdob = someDateFormatter.parse(s);
}

我个人的选择是 2。

您还可以使用不同的日期格式化程序,根据区域设置选择不同类型的日期表示形式(例如,12/01/2010 和 01/12/2010 在不同国家/地区是相同的日期)。

关于java - 支柱|类型转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3100310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com