salut,
Avant de répondre à ta question j'aimerais d'abord attirer ton attention sur ce code que tu as écrit :
1 2 3 4 5
| if((agent.length()==0)||(agent==null))
{
errors.add("erreurAgent", new ActionError("errors.agent"));
return mapping.findForward(CANCEL);
} |
La remarque porte sur le
if((agent.length()==0)||(agent==null))
Ici si agent==null, le code agent.length() va lever un NullPointerException puisqu'il est évalué en premier dans cette expression. La solution c'est d'écrire :
if((agent==null)||(agent.length()==0))
comme ça la partie agent.length() n'est pas évaluée si agent est null, car l'opérateur || fonctionne en court-circuit...
Concernant ta question sur le transfert des ActionForm, je crois que tu confonds un peu le rôle d'un objet ActionForm. Les objets ActionForm sont créés par le framework Struts lui-même (le servlet controller ActionServlet, en l'occurence) et passés aux Actions. Donc dans la méthode execute() de l'action, tu ne peux pas caster l'ActionForm vers une classe pour laquelle il n'était pas configuré. Si l'action est configuré pour utiliser un objet de type "AffecterDemandeForm", tu ne vas pas le caster vers le type "DetailsDemandeForm" étant donné que l'instance créé par la servlet Struts n'est pas de ce type.
Par contre, si tu veux malgré tout transférer l'objet AffecterDemandeForm que tu reçois vers une page JSP qui l'utilise pour l'affichage, dans ce cas, dans la méthode execute() tu pourrais enregistrer l'objet comme attribut de la requete ou de la session genre request.setAttribute("myform", affecterForm) puis faire un forward vers la page JSP qui pourrait alors récupérer ces informations pour l'affichage.
Sinon, il faudrait que tu revois le flow de controle de ton application.
Voilà, j'espère que ça pourrait t'aider.
Bon courage.
Partager