struts et JSP, principe des formulaires - Java - Programmation
Marsh Posté le 03-08-2005 à 21:05:01
boulax a écrit : Struts [...] taglib struts |
Fuis
Et pense à utiliser les taglibs de la JSTL
Et t'as oublié de poster les classes Action et Form associées
Marsh Posté le 03-08-2005 à 22:49:05
Ce qui serait intéressant c'est plutôt ton struts-config.xml.
Notamment pour savoir le nom du form-bean associé à l'action insererDepartement ce ne serait pas departementBean par hasard ?
Si oui le comportement que tu obtiens est normal et est lié au fonctionnement de la balise <html:form>
Si le bean n'est pas présent dans le scope défini au niveau de l'action
la balise <html:form> le créé.
Autrement dit au début de ta JSP ton bean n'est pas présent et la première balise <logic:present> ne le trouve pas mais le deuxième se situe au sein de la balise <html:form> qui créé ce bean et donc ton deuxième <logic:present> trouve le bean ...
Marsh Posté le 03-08-2005 à 23:11:12
spiman a écrit : Ce qui serait intéressant c'est plutôt ton struts-config.xml. |
un expert
Ok tu as élucidé la chose, mais donc comment faire pour créer proprement un formulaire qui puisse servir à la fois à la saisie et à l'insertion de données ?
Marsh Posté le 04-08-2005 à 00:02:22
Il te faut juste tester soit un attribut de l'ActionForm soit un attribut placé directement dans la request ou la session selon ton besoin. Attribut que tu auras prélablement renseigné avec une constante pour savoir si t'es en modification ou non.
Tu testes avec <logic:equal> :
par exemple pour un attribut de ton ActionForm :
<logic:equal name="departementBean" property="typeAction" value="<%=Constantes.MODIFICATION%>" >
</logic:equal>
Je sais pas si c'est propre. On utilise les balises logic de struts
ce qui évite les scriplets mais ce que fait la balise c'est pas violent
non plus surtout qu'on a pas de else et qu'il faut faire dans ce cas
<logic:equal> et <logic:notEqual>. On utilise quand même des scriptlets pour éviter de mettre en dur les valeurs testées.
Si tu cherches à faire des formulaires de type CRUD (Create Read Update Delete) tu peux utiliser les DispatchAction de Struts plutôt que les Actions classiques.
Marsh Posté le 04-08-2005 à 09:15:09
Merci
Je vais voir de ce côté là
Marsh Posté le 03-08-2005 à 17:03:38
Bon je deviens fous là...
J'apprends Struts ainsi que les taglib struts et j'essaie de me faire un formulaire pour modifier et ajouter des enregistrements à une base. (une table 'departement' dans cet exemple)
Pour avoir ce formulaire j'appelle une action. S'il s'agit d'une modification d'un enregistrement existant, je passe l'id dans l'url (action.do?id=truc)...
Au niveau de l'action, il vérifie si le parametre est present dans l'url et cree un Bean correspondant aux données voulues (le département en question), puis l'enregistre comme attribut dans l'objet request (request.setAttribute). S'il s'agit d'une saisie d'un nouvel enregistrement, l'action ne fait rien et forward à la JSP dans les deux cas.
Mon probleme est maintenant de faire la différence dans le JSP de ce formulaire entre les deux cas (ajout-modif). A ce que j'ai lu, on n'utilise plus de scriptlets, tout doit se faire avec des taglib vrai ?
Donc voila ce que j'ai, naïvement (test de presence du bean en fait )
et voila ce que ca donne:
Le premier test ok: j'ai bien "ajout" dans le titre, le deuxieme non (le bouton comporte le label "modifier" )...
Faut m'expliquer ce que j'ai pas compris
---------------
Posté depuis des chiottes, sales. Me gusta.