2010-06-23 5 views
0

J'essaie d'enregistrer une donnée sous une forme simple par Hibernate en utilisant des entretoises comme le contrôleur le problème, mais il y a une erreur qui se produit lorsque je soumets le formulaireStruts | Tapez erreur de casting

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

Je suppose que cela est à cause de la conflit de type, car le champ de formulaire (se référer au champ date de naissance) transmet généralement une chaîne avec la requête mais dans mon bean Form le type se réfère à un objet Java Data, donc quelle est ma véritable question? à un objet de données.

Snippet de ma forme haricot

private Date empdob; 

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

    public Date getEmpdob() { 
     return empdob; 
    }  

Ma classe d'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. 

Merci.

+0

Pouvez-vous s'il vous plaît ajouter le compositeur en question (setEmpdob)? Votre code currentyl montre simplement setEmplname. – tkr

Répondre

2

Vous pouvez aller à ce sujet, soit par:

1 - ont un setter comme une chaîne et un getter Date (vous pouvez convertir la valeur de chaîne à ce jour dans le compositeur);

private Date empdob; 

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

public Date getEmpdobDate() { 
    return empdob; 
} 

2 - ont deux ensembles de accesseurs, une paire de cordes et une paire pour la date

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); 
    } 

Mon choix personnel serait numéro 2.

Vous pouvez ont également différents formats de date qui choisissent différents types de représentations de date en fonction des paramètres régionaux (par exemple, 12/01/2010 et 01/12/2010 sont la même date dans différents pays).

+0

Merci, je pense que le premier est meilleur. – Switch