Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1361 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  struts et JSP, principe des formulaires

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

struts et JSP, principe des formulaires

n°1169108
boulax
Inserer phrase hype en anglais
Posté le 03-08-2005 à 17:03:38  profilanswer
 

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 [:spamafote])
 

Code :
  1. <%@ taglib uri="/tags/struts-html" prefix="html" %>
  2. <%@ taglib uri="/tags/struts-logic" prefix="logic" %>
  3. <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
  4. <html>
  5. <head>
  6.  <title>Saisie d'un département</title>
  7. </head>
  8. <body>
  9.  <h1><logic:present name="departementBean">
  10.       Modification
  11.       </logic:present>
  12.       <logic:notPresent name="departementBean">
  13.       Ajout
  14.       </logic:notPresent> d'un département
  15.  </h1>
  16.  <html:errors />
  17.  <html:form action="/insererDepartement">
  18.  <table>
  19.   <tr>
  20.    <td> Nom: </td>
  21.    <td> <html:text property="departementName" size="50"  /> </td>
  22.   </tr>
  23.   <tr>
  24.    <td> Description: </td>
  25.    <td> <html:textarea property="departementDesc" /> </td>
  26.   </tr>
  27.   <tr>
  28.    <td> <html:reset value="Effacer formulaire" /> </td>
  29.    <td> <logic:present name="departementBean">
  30.      <html:hidden property="idDepartement" />
  31.      <html:submit value="Modifier"/>
  32.       </logic:present>
  33.       <logic:notPresent name="departementBean">
  34.        <html:submit value="Ajouter" />
  35.       </logic:notPresent>
  36.    </td>
  37.   </tr>
  38.  </table>
  39.  </html:form>
  40. </body>
  41. </html>


 
et voila ce que ca donne:
 
http://img293.imageshack.us/img293/1368/ecran14lu.jpg
 
Le premier test ok: j'ai bien "ajout" dans le titre, le deuxieme non [:le kneu] (le bouton comporte le label "modifier" )...  
Faut m'expliquer ce que j'ai pas compris :cry:


---------------
Posté depuis des chiottes, sales. Me gusta.
mood
Publicité
Posté le 03-08-2005 à 17:03:38  profilanswer
 

n°1169365
masklinn
í dag viðrar vel til loftárása
Posté le 03-08-2005 à 21:05:01  profilanswer
 

boulax a écrit :

Struts [...] taglib struts


Fuis :o
 
Et pense à utiliser les taglibs de la JSTL :o
 
Et t'as oublié de poster les classes Action et Form associées :o


Message édité par masklinn le 03-08-2005 à 21:07:01

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1169483
spiman
Posté le 03-08-2005 à 22:49:05  profilanswer
 

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 ...
 

n°1169496
boulax
Inserer phrase hype en anglais
Posté le 03-08-2005 à 23:11:12  profilanswer
 

spiman a écrit :

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 ...


 
un expert :love:
 
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 ?


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1169538
spiman
Posté le 04-08-2005 à 00:02:22  profilanswer
 

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.

n°1169644
boulax
Inserer phrase hype en anglais
Posté le 04-08-2005 à 09:15:09  profilanswer
 

Merci :jap:
 
Je vais voir de ce côté là :)


---------------
Posté depuis des chiottes, sales. Me gusta.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  struts et JSP, principe des formulaires

 

Sujets relatifs
[Access] 2 petites question sur les formulairesajout enregistrement dans un sous-sous formulaires
Problème de formulaires...[Struts] Popup et retour
Exemple d'application compléte en java struts ?Les accents et Struts + Return et Explorer
questions PHP et les formulaires:Appel d'une valeur de JSP dans uen focntion JavaScript
JSP : probleme utilisation jsp:useBeanScript Vbs et formulaires dans IE
Plus de sujets relatifs à : struts et JSP, principe des formulaires


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR