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 :

[struts layout 1.1] utilisation des onglets ne fonctionne pas


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut [struts layout 1.1] utilisation des onglets ne fonctionne pas
    Je tente une page d'essai sur la gestion des tags par struts-layout que je n'arrive pas à faire fonctionner, les onglets ne sont pas cliquables et le contenu non affiché (cf pièce jointe). Voici le code :

    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
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    	pageEncoding="ISO-8859-1"%>
    <%@taglib uri="/WEB-INF/struts-layout.tld" prefix="layout"%>
    <html>
    <head>
    	<layout:skin includeScript="true"/> 
    <title>Test</title>
        <meta http-equiv = "Content-Language" content = "fr">
    </head>
    <body>
     
    <layout:tabs styleClass="FORM" width="400" selectedTabKeyName="tab">
    		<layout:tab key="carac1" width="50" href="test.jsp?tab=carac1">
    bla bla
    		</layout:tab>
    		<layout:tab key="carac2" width="50" href="test.jsp?tab=carac2">
    	bli bli
    		</layout:tab>
    		<layout:tab key="carac3" width="50" href="test.jsp?tab=carac3">
    			<tr><td>
    			panel content 3
    			</td></tr>
    		</layout:tab>
    	</layout:tabs>
    </body>
    </html>
    Html généré :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    <html>
    <head>
    <title>Test</title>
    <meta http-equiv="Content-Language" content="fr">
    </head>
    <body>
    <table border="0" cellspacing="0" cellpadding="0" width="400">
    	<tr>
    		<td>
    		<table width="100%" cellspacing="0" cellpadding="0">
    			<tr>
    				<td id="tabs0head0" class="ongletTextEna" width="50"
    					onmouseover="onTabHeaderOver(0,0,'ongletTextEna')"
    					onclick="selectTab(0,3,0,'ongletTextEna','ongletTextDis','ongletTextErr',null,null);">carac1</td>
    				<td width="5" class="ongletSpace">&nbsp;</td>
    				<td id="tabs0head1" class="ongletTextDis" width="50"
    					onmouseover="onTabHeaderOver(0,1,'ongletTextEna')"
    					onclick="selectTab(0,3,1,'ongletTextEna','ongletTextDis','ongletTextErr',null,null);">carac2</td>
    				<td width="5" class="ongletSpace">&nbsp;</td>
    				<td id="tabs0head2" class="ongletTextDis" width="50"
    					onmouseover="onTabHeaderOver(0,2,'ongletTextEna')"
    					onclick="selectTab(0,3,2,'ongletTextEna','ongletTextDis','ongletTextErr',null,null);">carac3</td>
    				<td width="5" class="ongletSpace">&nbsp;</td>
    				<td class="ongletSpace">&nbsp;</td>
    			</tr>
    			<tr>
    				<td height="5" colspan="7" class="ongletMiddle">&nbsp;</td>
    			</tr>
    		</table>
    		</td>
    	</tr>
    	<tr>
    		<td class="ongletMain">
    		<div id="tabs0tab0">
    		<table border="0" cellspacing="0" cellpadding="0" class="clsAction">
     
    		</table>
    		</div>
    		<div id="tabs0tab1" style="display:none;">
    		<table border="0" cellspacing="0" cellpadding="0" class="clsAction">
     
    		</table>
    		</div>
    		<div id="tabs0tab2" style="display:none;">
    		<table border="0" cellspacing="0" cellpadding="0" class="clsAction">
    			<tr>
    				<td>panel content 3</td>
    			</tr>
    		</table>
    		</div>
    		</td>
    	</tr>
    </table>
     
    </body>
    </html>
    J'ai bien suivi la procédure d'install et j'ai vérifié avec cette discussion qui semble sur un pb similaire.

    J'utilise ailleurs des tags de la taglib layout donc il n'y a pas de pb d'install de celle ci, quoique ce sont pour les tags grid , column et row, il n'y a pas d'utilisation de la partie javascript. Mais j'ai bien la déclaration des dossiers config, contenant les js, et images à la racine.
    Images attachées Images attachées  

  2. #2
    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
    Que cherches-tu à faire via href ?
    Avec une page JSP en référence, j'aurais plutôt vu <jsp:include>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    J'avoue que c'est une tentative désespérée pour que mon onglet soit clickable. Celui ci ne sert à rien à mon avis. Le but est de tout faire sur la même jsp je n'ai que du texte à afficher dans chaque onglet, au max un tableau.

    Le but à terme est de faire fonctionner un displaytag dans un de ces onglets : Pour l'instant le hic c'est que lorsque j'effectue un tri sur ce displaytable il perds l'onglet. Actuellement la gestion des onglets est statiques, il n'est donc pas étonnant que ça ne fonctionne pas. J'ai trouvé cette taglib qui semble pouvoir solutionner mon pb. Maintenant je la test sur un exemple simple pour la faire fonctionner avant de l'intégrer dans mon appli sur un exemple plus complexe.

    J'avais essayé l'intégration directe mais j'ai bien vu qu'il me fallait une étape intermédiaire

  4. #4
    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
    Ton besoin est où exactement ?
    Tu veux positionner l'onglet actif côté serveur ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    Mon besion à court terme est de faire fonctionner ce test simple d'utilisation des onglets. Pour l'instant rien ne fonctionne, donc test pas si simple!

    A moyen terme : Insérer un displaytable dans un onglet et faire que le tri nous ramène vers le bon onglet avec tableau trié. Pour l'instant mon tableau est bien trié mais l'onglet actif est celui par défaut.

  6. #6
    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
    Dans un premier temps, retire les href, ça risque d'interférer.
    Ensuite, test le programme, si tu peux changer d'onglet depuis l'IHM, le tag fonctionne.
    En dernier lieu, je suppose que tu es sur un onglet, tu cliques sur un bouton ou autre lien et tu appelles une Action qui elle doit renvoyer sur un autre onglet (c'est bien ça ?).
    Cette action doit positionner la valeur adéquate pour que l'affichage change, il faut passer par fr.improve.struts.taglib.layout.util.TabsUtil.setCurrentTab(selectedTabKeyName, key, request, response).
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    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
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    	pageEncoding="ISO-8859-1"%>
    <%@taglib uri="/WEB-INF/struts-layout.tld" prefix="layout"%>
    <%@taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
    <html>
    <head>
    	<layout:skin includeScript="true"/> 
    	<script language="JavaScript" src="<layout:resource type="cfg" name="swap.js"/>"></script>
    <title>Test</title>
        <meta http-equiv = "Content-Language" content = "fr">
    </head>
    <body>
     
    <layout:tabs styleClass="FORM" width="400" >
    		<layout:tab key="carac1" width="50" >
    			<html:text value="bla bla"/>
    		</layout:tab>
    		<layout:tab key="carac2" width="50" >
    			<html:text value="bli bli"/>
    		</layout:tab>
    		<layout:tab key="carac3" width="50" >
    			<html:text value="carac3 text"/>
    		</layout:tab>
    	</layout:tabs>
    </body>
    </html>
    Code généré :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    <html>
    <head>
    <title>Test</title>
    <meta http-equiv="Content-Language" content="fr">
    </head>
    <body>
    <table border="0" cellspacing="0" cellpadding="0" width="400">
    	<tr>
    		<td>
    		<table width="100%" cellspacing="0" cellpadding="0">
    			<tr>
    				<td id="tabs0head0" class="ongletTextEna" width="50"
    					onmouseover="onTabHeaderOver(0,0,'ongletTextEna')"
    					onclick="selectTab(0,3,0,'ongletTextEna','ongletTextDis','ongletTextErr',null,null);">carac1</td>
    				<td width="5" class="ongletSpace">&nbsp;</td>
    				<td id="tabs0head1" class="ongletTextDis" width="50"
    					onmouseover="onTabHeaderOver(0,1,'ongletTextEna')"
    					onclick="selectTab(0,3,1,'ongletTextEna','ongletTextDis','ongletTextErr',null,null);">carac2</td>
    				<td width="5" class="ongletSpace">&nbsp;</td>
    				<td id="tabs0head2" class="ongletTextDis" width="50"
    					onmouseover="onTabHeaderOver(0,2,'ongletTextEna')"
    					onclick="selectTab(0,3,2,'ongletTextEna','ongletTextDis','ongletTextErr',null,null);">carac3</td>
    				<td width="5" class="ongletSpace">&nbsp;</td>
    				<td class="ongletSpace">&nbsp;</td>
    			</tr>
    			<tr>
    				<td height="5" colspan="7" class="ongletMiddle">&nbsp;</td>
    			</tr>
    		</table>
    		</td>
    	</tr>
    	<tr>
    		<td class="ongletMain">
    		<div id="tabs0tab0">
    		<table border="0" cellspacing="0" cellpadding="0" class="clsAction">
     
    		</table>
    		</div>
    		<div id="tabs0tab1" style="display:none;">
    		<table border="0" cellspacing="0" cellpadding="0" class="clsAction">
     
    		</table>
    		</div>
    		<div id="tabs0tab2" style="display:none;">
    		<table border="0" cellspacing="0" cellpadding="0" class="clsAction">
    			<tr>
    				<td>panel content 3</td>
    			</tr>
    		</table>
    		</div>
    		</td>
    	</tr>
    </table>
     
    </body>
    </html>
    Comme on voit il y a bien une génération autour de mon layout:tab, mais il ne prend pas les libellés dasn les onglets et je ne suis pas sur qu'il arrive à trouver selectTab() (en debug pas a pas dans firebug on ne rentre pas dedans, pourtant il y a bien déclenchement pour onclick et onmouseover).

  8. #8
    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
    Si le source du bas est ce que tu as dans ton navigateur, il semble que struts-layout ne soit pas correctement configuré.
    Il faudrait donc commencer par vérifier ce point.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    J'ai une nouvelle fois revérifié, j'ai bien suivi toute la procédure. Est il possible que struts-layout 1.1 s'interface mal avec struts 1.1 sur WAS 6.1?

    N.b voici le manifest de struts.jar, c'est bien le 1.1?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Manifest-Version: 1.0
    Created-By: Apache Ant 1.5.1
    Extension-Name: Struts Framework
    Specification-Title: Struts Framework
    Specification-Vendor: Apache Software Foundation
    Specification-Version: 1.1
    Implementation-Title: Struts Framework
    Implementation-Vendor: Apache Software Foundation
    Implementation-Vendor-Id: org.apache
    Implementation-Version: 1.1
    Ou bien est ce que je regarde au mauvais endroit?

    Merci bcp pour ton aide OButterlin!

  10. #10
    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
    Pour la configuration de struts-layout, il faut vérifier le fichier Struts-Layout.properties qui devrait être à la racine de "src".

    Dans ce fichier, il y a 2 lignes particulièrement importantes :

    directory.images = ?
    directory.config = ?

    En fonction de la valeur affectée, il faut trouver le répertoire de configuration et d'images de struts-layout qui doit se trouver sous WebContent.

    Peux-tu vérifier ceci dans un premier temps ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    J'avais fait ce qui était dans la proc d'install :
    Struts-Layout_default.properties" in WEB-INF/classes.
    config" and "images" directory from the "resources" folder of the Struts-Layout archive to your webapp root folder
    et non Struts-Layout.properties dans src et config et images dans webcontent

    Du coup j'ai une erreur :
    [08/04/10 15:45:40:820 CEST] 00000022 ServletWrappe I SRVE0242I: [OSACEAR] [/OSAC] [/test.jsp] : L'initialisation a abouti.
    fr.improve.struts.taglib.layout.skin.BadSkinConfigurationException: caused by java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key formatter.class
    at fr.improve.struts.taglib.layout.skin.Skin.<init>(Skin.java:137)
    at fr.improve.struts.taglib.layout.skin.Skin.getSkin(Skin.java:183)
    at fr.improve.struts.taglib.layout.util.LayoutUtils.getSkin(LayoutUtils.java:494)
    at fr.improve.struts.taglib.layout.tab.TabsTag.doStartLayoutTag(TabsTag.java:151)
    at fr.improve.struts.taglib.layout.BodyLayoutTagSupport.doStartTag(BodyLayoutTagSupport.java:36)
    J'avoue ne pas savoir si c'est mieux ou moins bien, je dirais que ça vient de <layout:skin includeScript="true"/> mais je ne vois pas trop, rien trouver sur google sur ce point.

  12. #12
    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
    A vrai dire, si tu mets le fichier dans src, il ira (tout seul) dans /WEB-INF/classes.
    Peux-tu montrer le contenu du fichier ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    Struts-Layout.properties :

    directory.config = config
    directory.images = images
    et donc dans WebContent les répertoires config et images qui se trouvaient dans resources de l'archive struts_layout1.1.zip

  14. #14
    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
    Donc, la structure de ton projet est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    src
    ...package
    ...Struts-Layout.properties
     
    WebContent
    ...config
    ...... les fichiers javascript etc
    ...images
    ...... les images de struts-layout
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    Oui c'est exactement ça, avec en plus struts-layout.tld dans WEB-INF et Struts-Layout.jar dans WEB-INF pour être exhaustif

  16. #16
    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
    Struts-Layout.jar doit être dans /WEB-INF/lib
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    Oui autant pour moi j'avais mal fini ma phrase, c'est bien le cas de puis le début. Et pour finir dans struts-config.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    	<controller
    		processorClass="fr.improve.struts.taglib.layout.workflow.LayoutRequestProcessor" />
    ...
    	<plug-in
    		className="fr.improve.struts.taglib.layout.workflow.LayoutPlugin" >
    	</plug-in>

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    J'ai trouvé ceci :http://www.developpez.net/forums/d69...y-crumb-class/

    JE penseq ue ce problèem est similaire au mien, je ne sais aps trop à quoi ne ce qu'est ce fichier skin, auquel cas il faudrait que j'ajoute formatter dans ce fichier à ce que je comprends. Tu sais de quel sujet il s'agit?

  19. #19
    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
    Tu as quoi dans Struts-Layout.properties pour le paramètre skin=?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    Rien, je n'ai que les paramètres

    directory.config = config
    directory.images = images

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/02/2008, 08h35
  2. [Struts-Layout] Problème d'utilisation du Datagrid
    Par nabil148911 dans le forum Struts 1
    Réponses: 12
    Dernier message: 30/07/2007, 12h18
  3. Utilisation des onglets ?
    Par yoyom dans le forum IHM
    Réponses: 4
    Dernier message: 03/03/2007, 22h26
  4. Réponses: 2
    Dernier message: 14/12/2006, 15h43
  5. Question sur l'utilisation des onglets
    Par diden138 dans le forum Delphi
    Réponses: 20
    Dernier message: 16/11/2006, 19h48

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