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 MenuRepository


Sujet :

Struts 1 Java

  1. #1
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut Struts layout MenuRepository
    Bonjour à tous,
    voila j'ai un problème, pour ne pas changer .je voudrais juste créer un arbre simple en utilisant <layout:treeview>, je créé mes menu dans une action
    Voici mon code
    Action
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response)
    	throws Exception {
    MenuComponent treeviewComponent= new MenuComponent();
    			 String treeComponentName = treeForm.getRoot().getNodeName();
    			 treeviewComponent.setName(treeComponentName);
    			 treeviewComponent.setTitle(treeComponentName);
    			 request.setAttribute("treeComponentName", treeComponentName);
    			 ((MenuRepository)request.getSession().getAttribute(MenuRepository.MENU_REPOSITORY_KEY)).addMenu(treeviewComponent);
    			 LayoutUtils.addMenuIntoSession(request, treeviewComponent);
    et dans ma jsp j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <layout:treeview>
    <layout:menuItem name="${treeComponentName}"/>
    </layout:treeview>
    et voici le message quej'ai :[/B][/B][/B] [ServletException in:/treeBuildAction.do] Menu repository not found'
    Peut etre un problème de configuration je ne sais pas vraiment si quelqu'un a une idée merci.

  2. #2
    Expert confirmé

    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
    Par défaut
    Fais un test après avoir supprimé cette ligne dans ton Action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((MenuRepository)request.getSession().getAttribute(MenuRepository.MENU_REPOSITORY_KEY)).addMenu(treeviewComponent);
    car ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LayoutUtils.addMenuIntoSession(request, treeviewComponent);
    suffit pour ajouter le treeview dans le repository des menus.

    Et dans la jsp, ceci aussi doit suffire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <layout:treeview name="${treeComponentName}"/>

  3. #3
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    En fait le problème c'est que je voudrais construire l'arbre dynamiquement :
    donc voici mes la jsp que mon action forward
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <nested:form action="/treeBuildAction">
      	<layout:treeview>
      		<logic:present name="treeForm" property="root">
    	  		<nested:nest property="root" >
    	    		<jsp:include page="treenode.jsp" />
    	  		</nested:nest>
      		</logic:present>
    	</layout:treeview>
    et treenode.jsp
    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
    <nested:root>
    
      <img src="gfx/spacer.gif" width="<nested:write property="nodeIndent" />" height="1">
      
      <nested:equal property="showChildren" value="true"> 
      
        <nested:image src="gfx/km_minus.gif" property="collapse"/>
        <nested:notEmpty property="iconId">
        	<nested:img page="/icon" property="iconIdRequest"/>
        </nested:notEmpty>
        <nested:link href="maintabs.jsp?tab=Détail"
        		property="request">
    	   <layout:menuItem name="${treeComponentName}" /> 
    	</nested:link>
        <br> 
        <nested:iterate property="childCollection"> 
          <jsp:include page="treenode.jsp"/> 
        </nested:iterate> 
        
      </nested:equal>
    il y a beaucoup de code que j'enleverrai ici petit a petit, car ce code avec la balise <layout:menuItem> ne fait pas grand chose pour l'instant mais j'aimerai savoir pourquoi il ne trouve pas le menurepository ? Est ce qu'il y a quelque chose de particuliers a configurer, je n'ai pas mis dans mon struts-config car il est dit ceci dans la doc :
    Si le contenu du treeview est défini dans le repository des menus et si ce contenu est suffisamment important (au moins 50 éléments par défaut), uniquement les noeuds principaux seront chargés. Une requête sera automatiquement effectuée côté serveur via l'action struts-layout '/treeview' afin de charger les autres noeuds si nécessaires. L'action du treeview doit être définie dans le fichier struts-config.xml avec les attributs suivants :

    * path="/treeview"
    * type="fr.improve.struts.taglib.layout.treeview.TreeviewAction"
    or je n'ai pas une tel quantité de noeud donc je n'ai pas besoin de cette action. Est ce que sa pourrait etre cela qui pose problème quand même sinon y a til autre chose ?

  4. #4
    Expert confirmé

    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
    Par défaut
    Vu le message d'erreur, le problème est dans l'Action.

    As-tu fait un test en enlevant la ligne que je t'ai indiqué dans ma précédente réponse et sans modifier ta jsp ?

  5. #5
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Oui j'ai fait le test avec les 2 lignes une par une, j'ai mit les 2 pour avoir un commentaires sur c lignes, une que j'ai pri de la doc l'autre d'un de tes posts, et j'ai testé avec les 2. Donc je ne sais pas trop la ce qui ne va pas....

  6. #6
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Je mettrais toute mon action demain ptetre qqchose que sa vient d'autre chose

  7. #7
    Expert confirmé

    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
    Par défaut
    Citation Envoyé par david06600
    Oui j'ai fait le test avec les 2 lignes une par une, j'ai mit les 2 pour avoir un commentaires sur c lignes, une que j'ai pri de la doc l'autre d'un de tes posts, et j'ai testé avec les 2. Donc je ne sais pas trop la ce qui ne va pas....
    Tu as bien testé soit l'une, soit l'autre ?
    Et tu as le même message d'erreur dans les 2 cas ?

    Dans mon cas, ceci suffit et fonctionne très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LayoutUtils.addMenuIntoSession(request, treeviewComponent);

  8. #8
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    J'ai bien testé dans les 2 cas j'ai le même message. Je vois pas le problème...

  9. #9
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    En fait d'aprés ce que j'ai lu dans l'api struts layout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LayoutUtils.addMenuIntoSession(request, treeviewComponent);
    cela ne fonctionne qu'avec la version 1.2 or j'utilise la 1.1 et je procède de cette manière et cela fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MenuRepository repository = new MenuRepository();
    			 request.getSession().setAttribute(MenuRepository.MENU_REPOSITORY_KEY, repository);
    //Ensuite créer ses menus et les ajouter au répository avec la méthode //addMenu()
    Merci a toi en tout cas encore une fois de m'avoir aidé.

  10. #10
    Expert confirmé

    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
    Par défaut
    Je n'avais effectivement pas pensé à un problème de version.

    De rien david06600.

  11. #11
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Re, ben finalement même comme sa cela ne fonctionne pas alors la je ne comprend vraiment pas pourquoi si quelqu'un à une idée, voici mon 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    public class TreeBuilderAction extends Action {
    //	private static final Logger logger = Logger.getLogger(TreeBuilderAction.class);
     
    	/*
    	 *  (non-Javadoc)
    	 * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
    	 */
    	public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response)
    	throws Exception {
     
    		System.out.println("TreeBuilderAction");
    		TreeFormBean treeForm = (TreeFormBean) form;
    		DiffInfoForm infoForm = (DiffInfoForm)request.getSession().getAttribute("diffInfoForm");
     
    		JobInfoLookup lookup = infoForm.getInfoLookup();
     
    		TreeNodeBeanBuilder builder = new TreeNodeBeanBuilder(lookup);
    		if (treeForm.getRoot() == null) {
    			treeForm.setRoot(builder.buildRoot());	
     
    		} else {
    			 builder.refresh(treeForm.getRoot());
    		}
     
    		MenuRepository repository = (MenuRepository)request.getSession().getAttribute(MenuRepository.MENU_REPOSITORY_KEY);
    		if (repository == null) {
    			repository = new MenuRepository();
    			request.getSession().setAttribute(MenuRepository.MENU_REPOSITORY_KEY, repository);
    		}
     
    	 MenuComponent treeviewComponent= new MenuComponent();
    	 String treeComponentName = treeForm.getRoot().getNodeName();
    	 treeviewComponent.setName(treeComponentName);
    	 treeviewComponent.setTitle(treeComponentName);
    	 request.setAttribute("treeComponentName", treeComponentName);
    	 repository.addMenu(treeviewComponent);
     
     
     
    		/* return back to the page we came */
    		return (mapping.findForward("input"));
    	}
    dans la jsp j'ai simplement un tag <layout:treeview name="${treeComponentName}" />

    Toujours la même erreur menu repository not found.

  12. #12
    Expert confirmé

    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
    Par défaut
    As-tu vérifié que l'EL est bien interprétée ?

  13. #13
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Dans ce cas la il m'aurait affiché un autre message je pense car j'ai créer un nouveau projet dans lequel j'ai uniquement créé un arbre et en effet il interprète mal l'EL, mais au moins il trouve le menu répository. Je pense que sa doit venir d'autre part, peut etre du fait que j'utilise tiles, car j'ai l'impression que sa ne passe pas par l'action car j'ai des pointeurs dans l'action qui ne s'affiche pas pourtant j'ai bien d'autre résultat que me créé l'action.

  14. #14
    Expert confirmé

    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
    Par défaut
    Ne pourrais-tu pas tester avec la 1.2 de Struts-Layout ?

  15. #15
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Ne pourrais-tu pas tester avec la 1.2 de Struts-Layout ?
    C'est fait, mais cela ne change rien. Je vais revoir l'organisation de mes pages et de mes actions

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/06/2007, 15h51
  2. [Struts-Layout] exception quand j'utilise <layout:submit&
    Par jahjah42 dans le forum Struts 1
    Réponses: 2
    Dernier message: 29/11/2005, 11h17
  3. [Struts] Struts-Layout.properties - on le met où ?
    Par jahjah42 dans le forum Struts 1
    Réponses: 5
    Dernier message: 28/11/2005, 17h25
  4. [Struts-Layout] gestion des css
    Par pilz dans le forum Struts 1
    Réponses: 2
    Dernier message: 18/05/2005, 09h23
  5. [struts]Documentation Struts-layout
    Par GreenJay dans le forum Struts 1
    Réponses: 5
    Dernier message: 14/06/2004, 11h51

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