Struts | Ошибка приведения типа - PullRequest
0 голосов
/ 23 июня 2010

Я пытаюсь сохранить данные в простой форме через Hibernate, используя Struts в качестве контроллера, но при отправке формы возникает ошибка

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

Я предполагаю, что это из-законфликт типов, потому что поле формы (ссылается на поле даты рождения) обычно передает строку с запросом, но в моем компоненте формы тип называется объектом данных Java, поэтому реальный вопрос в том, где я могу набрать эту строку вк объекту данных.

Фрагмент из моего компонента формы

private Date empdob;

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

    public Date getEmpdob() {
        return empdob;
    }    

Мой класс действий

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.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 23 июня 2010

Вы можете сделать это одним из следующих способов:

1 - иметь установщик в виде строки и получатель в качестве даты (вы можете преобразовать значение из строки в дату в установщике);

private Date empdob;

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

public Date getEmpdobDate() {
    return empdob;
}  

2 - имеют два набора методов получения и установки, пару для строки и пару для даты

   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 - это одна и та же дата в разных странах).

0 голосов
/ 23 июня 2010

На самом деле нашел это в Интернете:

Использование типа данных Date в классе FormBean?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...