[ Struts tiles]

[ Struts tiles] - Java - Programmation

Marsh Posté le 16-04-2004 à 12:21:02    

Salut,
 
j'utilise le pluggin des tiles avec Struts.
je voudrais mettre un formulaire dans un 'tile' puis soumettre ce formulaire et afficher le resultat dans un autre 'tile'
mais je ne sais comment faire!!
 
si qqun a deja utilisé les tiles et à la réponse je suis preneur;)

Reply

Marsh Posté le 16-04-2004 à 12:21:02   

Reply

Marsh Posté le 16-04-2004 à 12:35:13    

Je ne vois pas ou se situe ton probleme.
Tiles sert juste a organiser ton 'affichage', le contenu peut etre gerer en jsp de facon toute simple.
Peutetre ai-je mal saisi ton probleme mais en tout cas, je ne vois pas trop ce que tu veux ?

Reply

Marsh Posté le 16-04-2004 à 14:51:25    

et bien je n'ai peut être pas bien expliqué mon truc...
j'ai un fichier tiles-defs.xml avec la definition de mes ecrans du type:
 <definition name="cc.emis" path="/layouts/rechercheLayout.jsp">
 <put name="title" value="Cheques Emis"/>
 <put name="menu" value="/tiles/defaultMenu.jsp"/>
 <put name="body1" value="/tiles/body1.jsp"/>
 <put name="error" value="/tiles/error.jsp"/>
 <put name="body2" value="/tiles/body2.jsp"/>
  </definition>
 
dans la partie body1 la jsp comporte un formulaire lié a une classe Action de struts. Au niveau du paremtrage de l'action comment lui dire qui si c'est ok il faut afficher la vue body2.jsp dans la bonne frame???
par exemple actuellement dans le struts-config.xml j'ai:
 
<action    path="/RechercheCCEmis"
type="okaidi.chequescadeaux.struts.actions.RechercheCCAction"
               name="RechCCEmisForm"
               scope="request">
       <forward name="rechercheOK"  path="cc.emis"/>
    </action>
 
et le forward fait reference a l'ecrant definit plus haut mais dans ce cas je recharge l'ensemble de la page!!!
or je voudrais ne recharger qu'un tile, celui de la partie body2....et je ne vois pas comment faire

Reply

Marsh Posté le 16-04-2004 à 15:19:06    

Salut,
 
Si ton problème est de mettre à jour une partie de ta page sans strictement rien toucher au reste, je te dirai que c'est impossible.
 
Il faudrai un système de mise en cache des parties composant ta page et de sortir de ce cache les parties non affectée par le traitement de la requête en cours.
 
A ma connaissance, Struts ne fait pas ça. La totalité de la page est recrée avec les tiles même si visuellement tu as l'impression qu'une petite partie  seulement a changée.
 
D'autant plus que tu voudrais que ce soit l'action qui fasse le bon affichage !!!
 
Une action s'occupe de la logique, ce sont les JSP qui font l'affichage
 
Tu pourrais, à la rigueur, positionner un flag dans la requête qui dise à la JSP prend body1 ou body2 mais ta page finale sera reconstruire en intégralité


Message édité par pascal34 le 16-04-2004 à 15:22:32
Reply

Marsh Posté le 16-04-2004 à 15:40:39    

d'apres ce que je comprends de ton intervention pascal34, c'est qu' avec les tiles c'est pas possible...par contre il me semble que Struts + jsp classique cela doit être possible: definir une page html servant de layout avec des include de jsp dans des frameset html, et dans le formulaire d'un frameset definir l'attribut target vers un autre frameset et sous struts on associe la vue jsp adequate qui s'affichera dans ce frameset cible: dans ce cas on a bien qu'une partie qui est reservie par le serveur...
me goures-je?

Reply

Marsh Posté le 16-04-2004 à 15:47:42    

pas plus !!!
 
Ta page finale sera reconstruite en entier que tu mettes des frames ou pas , des tiles ou pas, des includes ou pas.
 
Ta JSP est convertie en servlet dont le code s'execute quand tu invoque la JSP.
 
Revenons à ton problème :
 
est-ce que body1 et body2 sont affichés en même temps ou body1 avant body2, ou ....
 
suivant le cas tu sera amené à construire 2 écrans différents au lieu de vouloir mettre à jour le même écran


Message édité par pascal34 le 16-04-2004 à 15:48:42
Reply

Marsh Posté le 16-04-2004 à 16:38:38    

je suis ok sur la JSP convertie en servlet mais ca n'empeche pas qu'on peut gerer des pages en morceaux avec des includes: j'ai bosse sur un site ou une partie des frames etaient en php servie par un serveur apache et une autre partie des frames etaient en jsp (serveur Silverstream) et une petite frame de login permettait de recharger qu'une partie des frames (celles en jsp ) donc c'est faisable mais hors tiles...
En ce qui concerne mon pb, body 1 (criteres de recherche et bouton rechercher) et body 2 (liste des resultats de la recherche) se charge ensemble mais dans body2 le taglib <logic:present> me permet de 'declencher' le code que lorsque la liste des bean est renseigné apres le click sur lebouton rechercher (de body1) tu suis ;)
et donc actuellement, quand on lance la recherche, le formulaire de body1 se recharge avec la liste de resultat

Reply

Marsh Posté le 16-04-2004 à 17:01:21    

et actuellement toute ta page est rechargée ? ou juste body1 et body2 ? (jamais utilisé le tag resent donc peutetre que la reponse est evidente)

Reply

Marsh Posté le 16-04-2004 à 18:23:25    

desolé faut lire le taglig <logic:  present> le : et le p ensemble ca fait :p ....

Reply

Marsh Posté le 16-04-2004 à 20:14:16    

oups ;)
bref : si toute la page est rechargée, tu utilises le tag dans les 2 : body1 et body2 mais avec un test inversé ...
Mais ca regle pas ton probleme de page !
j'ai ce soucis egalement !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed