IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

TILES et STRUTS HTML


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut TILES et STRUTS HTML
    salut,
    je programme actuellement une application qui utilise tiles pour la partie template et les taglib html de struts pour afficher tout ce qui est formulaire,image ect... et aussi pour les Actions bien sûr!!

    Pour mettre en place le template j'ai commencé par créer tiles-definitions.html
    <tiles-definitions>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
      <!-- Definition de la page mere.                -->
      <definition name="site.mainLayout" path="/tiles-layout/layout.jsp">
          <put name="header" value="header.jsp" />
          <put name="menu"   value="menu.jsp" />
          <put name="footer" value="footer.jsp" />
          <put name="body"   value="()" />
      </definition>
     
    <!-- ici on étend la définition mere pour definir le body>
        <definition name="site.index.page" extends="site.mainLayout" >
          <put name="body"   value="body.jsp" />
        </definition>
    Apres on definit le layout.jsp(construction de la page)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
    <HTML>
      <HEAD>
     
      </HEAD>
     
    <body bgcolor="#ffffff" text="#000000" link="#023264" alink="#023264" vlink="#023264">
     
        <tiles:insert attribute='header'/>
        <tiles:insert attribute='menu'/>
        <tiles:insert attribute='body' />
        <tiles:insert attribute="footer" />
     
    </html>
    et on finit par l'index.jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
     
    <tiles:insert page="site.mainLayout" flush="true">
      <tiles:put name="header" value="header.jsp" />
      <tiles:put name="footer" value="footer.jsp" />
      <tiles:put name="menu"   value="Menu.jsp" />
      <tiles:put name="body"   value="body.jsp" />
    </tiles:insert>

    MA PREMIERE QUESTION
    -->A partir de TILES j'ai essayé de définir plusieurs body en fonction du lien du MENU qui sera selectionné par le user mais je n'arrive à en définir qu'un seul et unique, or moi je veux pouvoir afficehr plusieurs pages au centre dans l'index.jsp ,Donc j'aimerai savoir si vous avez une solution??
    Doit-on inserer plusieurs définitions dans Index.jsp pour qu'il prenne en compte les pages definies dans tiles-definitions???????

    MA DEUXIEME QUESTION
    Comme je l'ai dit j'utilise STRUTS, mais j'ai un gros soucis, lorsque je lance mon application, et que j'arrive sur index.jsp, il me lance une belle erreur(can't find action mapping) et pour quoi cela? je vais vous le dire, parce qu'il n'a pu initialiser mon struts-config.xml, en conséquence toutes les pages à l'interieur de mon index qui font appelle à une action Struts PLANTENT ROYALEMENT, vu que struts-config.xml n'est pas initialisé.

    Pour lancé mon application à l'heure actuelle je suis obligé de faire dans la barre d'adresse un index.do, apres cette opération effectuée je change le chemin en /jsp/index.jsp et là comme struts-config.xml a été initialiser je n'ai plus d'erreur, pfiou c'est pas tres cool tout ca!!!

    Donc Y a t-il un moyen d'initialisé struts-config à partir de l'index.jsp, sans faire cette manip pas tres académique?(Question a 1 million de dollars)


    Voilà je sais pas si j'ai été clair mais je galere vraiment sur cette application que je dois finir dans 1 moi et j'ai vraiment besoin d'un coup de pouce, je vous remercie d'avance.
    Si je ne suis pas clair dites le moi je reexplique!!

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    Plusieurs body dans une même page ? j ai jamais vu ca

    pour ta 2eme question post ton web.xml

    mais pour l init a partie de la JSP c est grillé à mon avis vu que ton fichier de conf est loadé au démarrage de ton application

    un appel par JNDI tu me diras mais à mon avis non

  3. #3
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut
    je ne veux pas mettre plusieurs body dans la même page, je souhaite par exemple:
    ona un menu avec 4 liens:
    lien1
    lien2
    lien3
    lien4

    je clique sur lien1 il maffiche profil.jsp dans le body
    je clique sur lien2 il m'affiche bonjour.jsp dans le body
    moi j' narrive a faire la liaison qu'avec seulement un lien du menu mais pas tous!!!

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    Ben c est pas pareil entre générer une page qui contient
    <body>
    tru tru tru
    </body>

    <body>
    truc tru ctruc
    </body>

    ...

    Si tu postais ton code ca irait mieux aussi ..

  5. #5
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut
    voici mon web.xml

    mais mon code je te l'ai passé
    c'est ce que j'ai mis dans mon premiere poste
    c'est simple disons que j'ai
    une page bonjour.jsp qui contient juste "bonjour"
    une page auvoir.jsp qui contient jsute "auvoir"
    je veux qu' cliquant sur les lien du menu j'affiche soit bonjour soit au revoir

    En fait je veux arriver a reproduire le meme effet que les FRAME en html
    ou bien encore que les PSEUDO-FRAME en php
    genre en php ca donnerait une page centre.php
    dedans y aurait un switch($_GET[page])
    case 'bonjour' :include bonjour.jsp
    case 'fsdfsdfs':include tata.jsp
    voila ce que je veux mais avec tiles je nyarrive pas a inserer des bout de code dans le body


    pour la 2eme question: peut-être je pourrait faire une page html "bidon" avant l'arrivée sur l'appli avec un lien vers index.do pour loader struts-config??
    Fichiers attachés Fichiers attachés

  6. #6
    Membre expérimenté Avatar de petitpasdelune
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 221
    Par défaut
    Petite question : quelle version de struts tu utilises ?
    EDIT: a priori la 1.1 voir 1.0

    Je ne veux pas mettre plusieurs body dans la même page, je souhaite par exemple:
    ona un menu avec 4 liens:
    lien1
    lien2
    lien3
    lien4
    je clique sur lien1 il maffiche profil.jsp dans le body
    je clique sur lien2 il m'affiche bonjour.jsp dans le body
    moi j' narrive a faire la liaison qu'avec seulement un lien du menu mais pas tous!!!
    C'est la fonctionnalité de base de Tiles.
    C'est dans ce cas assez simple. Comme l'ensemble des pages se basent sur un (ou plusieurs) modèle, tu dois simplement définir tes nouvelles pages dans ton tiles-defs.xml, comme dérivées d'un modèle en indiquant les parties qui diffèrent de ce modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration//EN" "http://struts.apache.org/dtds/tiles-config_1_3.dtd">
    <tiles-definitions>
    	<definition name="htmllayout" path="/WEB-INF/tiles-templates/htmllayout.jsp">
    		<put name="title" type="string" value="Changez moi" />
    		<put name="head" value="/WEB-INF/tiles-atoms/head.jsp" />
    		<put name="main" value="/WEB-INF/tiles-atoms/main.jsp" />
    		<put name="foot" value="/WEB-INF/tiles-atoms/foot.jsp" />
    	</definition>
    	<definition name="htmldefault.page" extends="htmllayout">
    		<put name="title" type="string" value="La page html par defaut." />
    		<put name="main" value="/WEB-INF/tiles-atoms/default.jsp"/>	
    	</definition>
    	<definition name="html02.page" extends="htmllayout">
    		<put name="title" type="string" value="Page html 02." />
    		<put name="main" value="/WEB-INF/tiles-atoms/html02.jsp"/>	
    	</definition>
    	<definition name="html03.page" extends="htmllayout">
    		<put name="title" type="string" value="Page html 03." />
    		<put name="main" value="/WEB-INF/tiles-atoms/html03.jsp"/>	
    	</definition>
    	<definition name="html04.page" extends="htmllayout">
    		<put name="title" type="string" value="Page html 03." />
    		<put name="main" value="/WEB-INF/tiles-atoms/html04.jsp"/>	
    	</definition>
    </tiles-definitions>
    Dans les définitions précédentes, je défini le template htmllayout et 4 pages (htmldefault.page, html02.page, html03.page, html04.page) qui dérivent de cette définition que par le changement de la partie main et de la chaîne title.
    Cela doit répondre à ta question n°1.

    Pour la question n°2, j'avoue que j'ai des difficultés à te comprendre. Strust marche bien en général . Normalement, quand tu définis ta page de garde en tant que définition Tiles (index.page), il est conseille d'avoir une jsp de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <%@ page language="java" pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
    <tiles:insert definition="htmldefault.page"/>
    Sinon tu utilises une redirection vers une action qui te renvoie vers ta définition de page d'index (c'est dans la FAQ).

    Pour les problèmes "d'initialisation" de struts-config.xml, j'ai du mal à comprendre en quoi il n'est pas initialisé : quels sont les messages d'erreur que tu as ?

    PPDL.

  7. #7
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut
    Deja jte rmercie pour avoir pris la peine d'avoir lu ce long message que j'ai posté.
    Ensuite pour ma deuxieme question je vais t'expliqué mon soucis en detail.

    En fait dans mon index .jsp
    j'ai un header
    un menu
    un fichier profil.jsp qui contient un formulaire et donc forcément une action="/profil"


    Mais ce qui ce passe c'est que lorsque je run mon application et que j'arrive sur index.jsp, il me jette une jolie erreur cannot find Action Mapping(il ne trouve pas d'action), ensuite si cette fois-ci, je fais un profil.do dans la barre d'adresse, cette fois il m'affiche correctement la page profil.
    Ensuite je reessaye un index.jsp dans la barre d'adressee et là comme par magie il me l'affiche bien. Bien moi je pense que c'est parce qu'en tappant profil.do j'ai "initialiser" struts-config, tandis qu'en allant directement sur index.jsp je ne l'initialise pas!, pkoi? ca je ne sais pas!!!

    j'avais aussi essayé de faire un index.do avant de faire index.jsp et c'etait le meme resultat, apres l'index.do, ma page index.jsp s'affichait enfin.



    Pour la question numero 1:
    Si on souhaite afficher tes 4 pages(htmldefaut,htmlpage 1,2,3,4),... en fonction du lien qui sera cliqué
    il faudra donc faire une page avec un insert definition("htmldefaut") + une page jsp avec le code, donc 2 pages à chaque fois?

  8. #8
    Membre expérimenté Avatar de petitpasdelune
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 221
    Par défaut
    En fait, soit :
    - tu n'appelles pas correctement ton action dans ton menu
    - ton action est mal configurée (peu probable étant donné qu'elle fonctionne lors d'un appel direct)

    normalement on a quelque chose comme cela dans un fragment de JSP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <%@ page language="java" pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
    <div class="nav" style="">
    	<ul>
    		<li><html:link title="Services"       accesskey="1" action="/service.do">Services</html:link></li>
    		<li><html:link title="Produits"       accesskey="2" action="/product.do">Produits</html:link></li>
    		<li><html:link title="Contacts"       accesskey="4" action="/contact.do">Contacts</html:link></li>
    		<li><html:link title="Telechargement" accesskey="5" action="/download.do">T&eacute;l&eacute;chargement</html:link></li>
    		<li><html:link title="Tarifs"         accesskey="6" action="/price.do">Tarifs</html:link></li>
    	</ul>
    </div>
    J'espère que cela pourra t'aider.

    PPDL

  9. #9
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut
    non ca n'a rien avoir mon menu
    dans mon index. jsp:
    j'ai testé que si je supprime ce quil y a dans profil.jsp c'est à dire mon action
    <html:form action=/action>
    et que je run l'appli, et il bien il m'affiche tres correctement mon index.jsp avec mon header,menu et profil

    Mon soucis moi vient vraiment du fait qu'en démarrant d'index.jsp, je ne rentre pas struts-config
    c'est pas tres logique tout cas dans le sens ou, dans index.jsp se trouve profil.jsp, vu que profil.jsp est inclue dedans, il devrait forcément se référer à l'action.


    Pour la question numero 1:
    Si on souhaite afficher tes 4 pages(htmldefaut,htmlpage 1,2,3,4),... en fonction du lien qui sera cliqué
    il faudra donc faire une page avec un insert definition("htmldefaut") + une page jsp avec le code, donc 2 pages à chaque fois?

  10. #10
    Membre expérimenté Avatar de petitpasdelune
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 221
    Par défaut
    non ca n'a rien avoir mon menu
    dans mon index. jsp:
    j'ai testé que si je supprime ce quil y a dans profil.jsp c'est à dire mon action
    <html:form action=/action>
    et que je run l'appli, et il bien il m'affiche tres correctement mon index.jsp avec mon header,menu et profil

    Mon soucis moi vient vraiment du fait qu'en démarrant d'index.jsp, je ne rentre pas struts-config
    c'est pas tres logique tout cas dans le sens ou, dans index.jsp se trouve profil.jsp, vu que profil.jsp est inclue dedans, il devrait forcément se référer à l'action.
    Sans le slash et les doubles quotes autour de /action .... cela me semble normal qu'il fasse une erreur
    Pour la question numero 1:
    Si on souhaite afficher tes 4 pages(htmldefaut,htmlpage 1,2,3,4),... en fonction du lien qui sera cliqué
    il faudra donc faire une page avec un insert definition("htmldefaut") + une page jsp avec le code, donc 2 pages à chaque fois?
    Si tu veux pouvoir accéder directement aux JSP oui. Mais l'avantage de Tiles et de pouvoir empêcher l'accès direct aux pages. Elles ne sont accessibles que via des actions. Ce qui permet de mieux contraindre la navigation et d'éviter les currieux mal intentionnés. Les pages définies par Tiles (htmldefault,...) sont utilisées comme cela dans les struts-config.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
    <struts-config>
      <data-sources />
      <form-beans />
      <global-exceptions />
      <global-forwards />
      <action-mappings >
        <action path="/html01" type="com.iscdinformatique.svgdemo.struts.action.Html01Action">
          <forward name="success" path="html01.page" />
          <forward name="failure" path="/index.jsp" />
        </action>
        <action path="/html02" type="com.iscdinformatique.svgdemo.struts.action.Html02Action">
          <forward name="success" path="html02.page" />
          <forward name="failure" path="/index.jsp" />
        </action>
        <action path="/html03" type="com.iscdinformatique.svgdemo.struts.action.Html03Action">
          <forward name="success" path="html03.page" />
          <forward name="failure" path="/index.jsp" />
        </action>
    
      </action-mappings>
      <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor" bufferSize="4096" />
    
      <message-resources parameter="com.iscdinformatique.svgdemo.struts.ApplicationResources" />
      <plug-in className="org.apache.struts.tiles.TilesPlugin">
        <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
      </plug-in>
    </struts-config>
    En bleu les forwards des actions qui renvoient directement vers une définition du fichier tiles-defs.xml.
    Pour accéder directement à une définition Tiles via un hyperlien, le seul moyen A MA CONNAISSANCE (limitée) et de faire une action qui renvoie vers la page (10 lignes de codes) soit une action "HUB" qui renvoie vers la bonne définition en fonction d'un paramètre.

    A moins que quelqu'un puisse me donner une solution ?

    EDIT après 15s de Google

    Dans le struts-config.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <action path="/linkMenu01" parameter="html01.page" type="org.apache.struts.actions.ForwardAction">
    </action>
    ...
    Et tu appelles ta définition tiles par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:link action="linkMenu01">Menu01</a>


    PPDL.

  11. #11
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Par défaut configuration des fichiers .page dans struts-config.xml
    salut tout le monde
    je viens de lire les messages sur le forum concernant TILES et Struts html.
    je suis en train d'utiliser une les tiles avec les fichiers .page mais j'ai du mal à les configurer dans mon fichier struts-config.xml, on dirait qu'il ne voit pas la définition des fichiers .page faite dans le fichier tiles-defs.xml.

    merci d'avance !!!

  12. #12
    Membre expérimenté Avatar de petitpasdelune
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 221
    Par défaut
    Bonjour Maxinf.
    Peux-tu nous montrer tes fichiers struts-config.xml et tiles-defs.xml stp ?

    PPDL ?

  13. #13
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par maxinf
    salut tout le monde
    je viens de lire les messages sur le forum concernant TILES et Struts html.
    je suis en train d'utiliser une les tiles avec les fichiers .page mais j'ai du mal à les configurer dans mon fichier struts-config.xml, on dirait qu'il ne voit pas la définition des fichiers .page faite dans le fichier tiles-defs.xml.

    merci d'avance !!!
    Tu as paramétré le struts-config.xml ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <!-- ======= 
     PLUGINS  
     ======= -->
     <plug-in className="org.apache.struts.tiles.TilesPlugin">
      <set-property property="definitions-parser-validate" value="false"/>
      <set-property property="definitions-config" value="/WEB-INF/struts-tiles.xml"/>
      <set-property property="moduleAware" value="true"/>
     </plug-in>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 12
    Dernier message: 03/11/2005, 12h26
  2. [Struts]HTML:FORM ET HTML:HIDDEN
    Par zurich dans le forum Struts 1
    Réponses: 6
    Dernier message: 07/02/2005, 23h30
  3. Réponses: 10
    Dernier message: 27/08/2004, 11h55
  4. [Struts]<html:errors/> request
    Par Eydoll dans le forum Struts 1
    Réponses: 5
    Dernier message: 28/07/2004, 14h14
  5. [débutant][struts]html:options
    Par GreenJay dans le forum Struts 1
    Réponses: 5
    Dernier message: 24/05/2004, 14h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo