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] treeview et message resources


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Points : 17
    Points
    17
    Par défaut [Struts-Layout] treeview et message resources
    Bonjour,

    Je travaille sur une fonctionnalité permettant de générer un arbre à partir d'une base de donnée. Cet arbre est remplit au fur et à mesure de l'exploration de la base (faite à l'aide de formulaires permettant d'effectuer des recherches simples).

    Mon application Struts utilise un système de message resources pour l'internationalisation mais aussi le paramétrage de la base.

    Problème : Je veux que Struts-layout ignore la ressource déclarée pour l'appli, mais affiche directement la clé plutôt que d'essayer de la traduire... Puisque je ne veux pas traduire la base... d'autant plus que la génération de l'arbre est complètement dynamique (rien en dur dans un fichier de properties donc... ).

    Info : J'ai récupéré le code source de Struts-layout pour le modifier directement et rajouter la gestion d'un paramètre "use.bundle" à placer dans Struts-layout.properties, en modifiant donc la méthode "getLabel" de LayoutUtils, mais la traduction semble être faite ailleurs...

    Une idée?

  2. #2
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    Question basique (je ne connais pas struts-layout en detail), n'as tu pas un attribut de type "resource" dans tes balises? Si oui il suffit d'indiquer false dedans pour qu'il ignore les bundles.

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    Il y a un attribut "bundle", mais lorsque je met "false" dedans, il l'interprète comme une ressource à charger...

    [ServletException in:/WEB-INF/pages/consultation/treeView.jsp] Missing resources attribute false'

  4. #4
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    Il doit y avoir un moyen de le faire, ou alors existerait-il une autre librairie permettant de construire des arbres, et plus souple que Struts-layout?

  5. #5
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Citation Envoyé par Calahad
    Il y a un attribut "bundle", mais lorsque je met "false" dedans, il l'interprète comme une ressource à charger...

    [ServletException in:/WEB-INF/pages/consultation/treeView.jsp] Missing resources attribute false'
    Dans l'attribut bundle, il faut mettre la clé du fichier ressources à utiliser, déclaré dans le struts-config.xml.

    Pour faire en sorte que Struts-Layout ignore la ressource définie dans le struts-config.xml dans le treeview, pourquoi ne pas définir une autre ressource comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <message-resources key="ressources2" parameter="fichierRessources2" null="false"/>
    ensuite créer fichierRessources2.properties à vide et ensuite spécifier bundle="ressources2" dans le tag layout:treeview.

    Ainsi, aucune traduction ne devrait être faite.
    J'avoue que ma solution est un peu tordue mais je n'en vois pas d'autres.

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    Merci pour cette réponse, mais même si aucune traduction n'a lieu, les libellés apparaissent avec des ???.fr???bla??? de partout...

    Ta solution revient à garder un seul fichier de ressource, et à ne pas y mettre de clés non?

  7. #7
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Désolée, je crois que je n'ai pas été assez claire.

    Ma solution consiste à définir deux messages ressources dans le struts-config.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <message-resources parameter="fichierRessources1"/>
    <message-resources key="ressources2" parameter="fichierRessources2" null="false"/>
    Et si j'ai bien compris, dans le cas du treeview, tu ne veux pas que la traduction soit faite, donc tu spécifies bundle="ressources2" dans le tag treeview.
    Pour les autres tags, tu ne spécifies pas l'attribut bundle et par défaut, il ira chercher les libellés dans le premier fichier ressource.

    Mais peut-être que je suis complètement à côté de la plaque et que je n'ai rien compris à ce que tu demandes ?

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    Non non, tu t'es bien exprimée , j'ai bien compris ce que tu disais, mais ça ne fonctionne malheureusement pas...

    Je suis assez étonné que l'utilisation d'un resource bundle soit forcée de la sorte

    Bah tant pis, pas le temps de recoder le bousin...je vais me chercher autre chose de plus flexible.

    Merci quand même et désolé pour le retard dans la réponse, mais pour ne pas bloquer le projet j'ai laissé ce problème de côté et je me suis occupé du reste...

  9. #9
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Citation Envoyé par Calahad
    mais ça ne fonctionne malheureusement pas
    Pourrais-tu être plus précis ? Quel est le résultat obtenu ? As-tu des messages d'erreur ?
    Quelle version de Struts-Layout utilises-tu ?

    Je peux t'assurer que ma solution fonctionne avec Struts-Layout 1.2.

  10. #10
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    Et bien j'ai toujours les ???fr.??? qui entourent les clés lors de l'affichage. Je ne sais pas quelle version de struts-layout j'utilise, j'ai conservé le jar du projet, qui est un peu vieux en effet.

    Je teste de suite avec la version 1.2

    Edit : je viens de tester.....ça ne marche pas chez moi.

    JSP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <layout:treeview 
    	name="treeView" 
    	expandedLevelsAtFirst="4" 
    	styleClass="TREEVIEW"
    	autoIncrement="false"
    	width="100%"
    	bundle="ressourcesVide"
    />
    Struts-config :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
          <message-resources parameter="ApplicationResources" null="false" />
      	  <message-resources key="ressourcesVide" parameter="EmptyResources" null="false"/>
    Java :
    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
     
     
    	/**
             * Initialisation de l'arbre dans la partie gauche de l'écran
             */
    	public static void initTreeAction(HttpServletRequest request) {
     
    		if (LayoutUtils.getMenuFromSession(request,MenuRepository.MENU_REPOSITORY_KEY) == null) {
    			TreeView treeview = new TreeView(request);
     
    			MenuRepository lc_repository = new MenuRepository();
    			lc_repository.addMenu(treeview);
    		    LayoutUtils.addMenuIntoSession(request, treeview);
    		}
    	}   
     
     
      public TreeView(HttpServletRequest request) {
        this.setName("treeView");
        ServiceApplication sa = new ServiceApplication();
        for (Iterator i=sa.getApplications().iterator();i.hasNext();) {
          ApplicationBean ab = (ApplicationBean)(i.next());
          MenuComponent mc = new MenuComponent();
          mc.setName(String.valueOf(ab.getId()));
          mc.setTitle(ab.getLabel());
          mc.setImage("appli.gif");
          this.addMenuComponent(mc);
        }
      }

  11. #11
    Membre expérimenté
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Points : 1 464
    Points
    1 464
    Par défaut
    Bonjour,
    peut etre que vous serez interesse par mon projet open source JSControlsTags http://jscontrolstags.sourceforge.net/

    J'ai mis en place un treeview (base sur tafeltree) dans mon projet open source JSControlsTags. Ce treeview est base sur scriptaculous et prototype. Il propose de nombreuses fonctionnalites comme le drag/drop, l'edition d'un noeud, l'ouverture d'un noued en AJAX...

    J'ai developpe une taglib qui permet de generer le javascript qui permet de gerer tafeltree (a l'AjaxTags). Pour construire ce treeview, il y a deux facons de le faire :

    1. definir dans une JSP les noeuds
    2. construire dynamiquement le treeview.

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
                   /**
                     * Root node with particulary image
                     */
    		TreeNode root1 =  new TreeNode("root1", 
    				getResources(request).getMessage("treeview.treeview-view.root.title"));
    		root1.setImg("base.gif");
    		dynamicTreeview.addTreeNode(root1);
    			/**
                             * Node with particulary image
                             */
    			TreeNode child1 = new TreeNode("child1", "The Object");
    			child1.setImg("page.gif");
    			root1.addTreeNode(child1);
                            ....
    Les titres des noeuds sont renseigne par le deuxieme parametre du constructeur TreeNode OU pour la methode setText.

    Si vous telecharger jscontrolstags-usecases-1.0-b1 et que vous l'installer sur tomcat, vous pouvez voir un exemple sur http://localhost:8080/jscontrolstags...?dispatch=load

    L'action struts qui construit le treeview se trouve dans la classe DynamicTreeviewAction.

    Vous pouvez voir une demo en ligne du treeview sur http://jscontrolstags.sourceforge.ne.../treeview.html

    J'espere que vous serez interesse.

    Angelo

  12. #12
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Enlève le null="false" dans la balise message-ressources comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       <message-resources parameter="ApplicationResources" null="false">
       <message-resources key="ressourcesVide" parameter="EmptyResources"/>
    Désolée, je m'étais trompée dans l'exemple que je t'avais donné.

  13. #13
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    Merci!

    Ca marche très bien en effet

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [STRUTS] [Debutant] Cannot find message resources...
    Par grizzz dans le forum Struts 1
    Réponses: 14
    Dernier message: 05/05/2011, 16h08
  2. Réponses: 1
    Dernier message: 26/10/2006, 17h44
  3. Réponses: 3
    Dernier message: 03/10/2006, 19h33
  4. [Struts layout] Treeview
    Par Varroux dans le forum Struts 1
    Réponses: 4
    Dernier message: 11/07/2006, 12h01
  5. [STRUTS-LAYOUT] Treeview
    Par DarkWark dans le forum Struts 1
    Réponses: 13
    Dernier message: 29/03/2006, 22h51

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