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

Servlets/JSP Java Discussion :

Problème avec html:commandLink dynamique


Sujet :

Servlets/JSP Java

  1. #1
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut Problème avec html:commandLink dynamique
    Bonjour,

    J'essaie de créer un menu dynamique pour mon application. Ce menu est créer en fonction de l'identité de l'utilisateur.

    Je rencontre un problème avec html:commandLink. voici mon code du menu:

    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
     
    <%@ page contentType="text/html" %>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="html" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="core" %>
     
    <core:view>
    	<html:form>
    		<html:dataTable value="#{menu.menuTable}" var="lien" border="1">
    			<html:column>
    				<html:commandLink action="#{lien.lien}" value="#{lien.titre}"/>
    				<html:outputText value="#{lien.lien}"/>
    			</html:column>
    		</html:dataTable>
    	</html:form>
    </core:view>
    mon menuTable renvoie une List d'objet qui contiennent le titre du lien et la référence (du fichier faces-config.xml)

    quand je lance la page cela donne:


    Uploaded with ImageShack.us

    Uploaded with ImageShack.us

    on voit bien que les méthodes sont bien interprétées et renvoie leur valeur string (j'ai mis le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:outputText value="#{lien.lien}"/>
    pour tester...

    mais quand je clic sur mon lien j'obtient ça:

    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
     
    HTTP Status 500 -
     
    type Exception report
     
    message
     
    descriptionThe server encountered an internal error () that prevented it from fulfilling this request.
     
    exception
     
    javax.servlet.ServletException: javax.el.MethodNotFoundException: Method not found: commun.Menu@1c63e9c.lien()
     
    root cause
     
    javax.faces.el.MethodNotFoundException: javax.el.MethodNotFoundException: Method not found: commun.Menu@1c63e9c.lien()
     
    root cause
     
    javax.el.MethodNotFoundException: Method not found: commun.Menu@1c63e9c.lien()
     
    note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 3.1.1 logs.
    GlassFish Server Open Source Edition 3.1.1
    Je ne comprends pas pourquoi, bien sure j'ai bien configuré mon fichier faces-config:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        </navigation-rule>
           <navigation-rule>
            <from-view-id>/menu.jsp</from-view-id>
            <navigation-case>
                <from-outcome>menuTOinfo</from-outcome>
                <to-view-id>/info.jsp</to-view-id>
            </navigation-case>
        </navigation-rule>
    j'ai testé en mettant la valeur en dure dans ma page jsp et ça fonctionne...

    j'ai fait des recherches sur internet et je n'ai pas trouvé de problème semblable par contre de nombreux codes qui me montrent que je peux faire ainsi...

    si quelqu'un a une idée de ce qui bug...

  2. #2
    Membre averti Avatar de coshibe
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2011
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 183
    Points : 406
    Points
    406
    Par défaut
    pourrais tu ajouter le code de ta servlet?

  3. #3
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut
    Alors mon contrôleur donne ça:

    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
     
    public class C_Menu 
    	{
    	private M_Menu ModeleMenu;
     
    	FacesContext contextJSF;
    	C_Authentification authentification;
     
    	/**
    	 * Constructeur Primaire
    	 */
    	public C_Menu()
    		{
    		// Récupération du context JSF
    		contextJSF = FacesContext.getCurrentInstance();
     
    		// Récupération de l'instanciation de la class C_Authentification
    		authentification = (C_Authentification) contextJSF.getApplication().getExpressionFactory().createValueExpression(contextJSF.getELContext(), "#{authentification}", C_Authentification.class).getValue(contextJSF.getELContext());
     
    		// Instanciation du modèle Menu
    		ModeleMenu = new M_Menu();
     
    		}
     
    	/**
    	 * Récupérer le liste des groupes auquel appartient l'utilisateur
    	 * @return La liste des groupes
    	 */
    	public String[] getGroupe(){return ModeleMenu.getGroupe();}
     
    	/**
    	 * Récupérer la liste des groupes depuis la class authentification et l'enregistrer dans modele
    	 */
    	public void setGroupe(){ModeleMenu.setGroupe(authentification.getGroupe());}
     
    	/**
    	 * Récupérer la liste (List) des menus disponibles pour l'utilisateur courant
    	 * @return La list des menus de l'utilisateur courant
    	 */
    	public List<Menu> getMenuTable()
    		{
    		setGroupe();
    		return ModeleMenu.createMenuData();
    		}
    	}
    et mon Modele:

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    public class M_Menu 
    	{
    	private List menuTable;
    	private String[] listeGroupe;
    	private XMLInterface xmlInterface;
    	private List<Menu> listeMenu;	
    	/**
    	 * Constructeur Primaire
    	 */
    	public M_Menu()
    		{
    		menuTable = new ArrayList();
    		// Instanciation de l'objet de connexion XMLInterface()
    		xmlInterface = new XMLInterface();		
    		}
     
    	/**
    	 * Récupérer le liste des groupes auquel appartient l'utilisateur
    	 * @return La liste des groupes
    	 */
    	public String[] getGroupe(){return this.listeGroupe;}
     
    	/**
    	 * Enregistrer la liste des groupes auquel appartient l'utilisateur
    	 * @param ListGroupe La liste des groupes
    	 */
    	public void setGroupe(String[] ListGroupe){this.listeGroupe = ListGroupe;}
     
    	/**
    	 * Récupérer la table des menus
    	 * @return la table des menus
    	 */
    	public List getMenuTable(){return this.menuTable;}
     
    	/**
    	 * Enregistrer la table des menus
    	 * @param MenuTable la table des menus
    	 */
    	public void setMenuData(List MenuTable){this.menuTable = MenuTable;}
     
    	/**
    	 * Générer la table des menus à partir des groupes de l'utilisateur et du fichier XML dsiweb.xml
    	 */
    	public List<Menu> createMenuData()
    		{
    		// Récupération de la liste des groupes de l'utilisateur
    		this.listeGroupe = getGroupe();
    		List<Menu> listeMenuAffice = new ArrayList();
    		//récupération de la liste des menus depuis le fichier xml
    		listeMenu = xmlInterface.getMenu();
     
    		// Sélection des menus dont l'utilisateur a le droit d'afficher
    		for(int i=0; i<listeMenu.size(); i++)
    			{
    			Menu menu = listeMenu.get(i);
    			for(int j=0; j<menu.getGroupe().length; j++)
    				{
    				for(int k=0; k<listeGroupe.length; k++)
    					{
    					String[] splitGroupe = listeGroupe[k].split(",");
    					if(splitGroupe.length>0)
    						{
    						String[] splitSplitGroupe = splitGroupe[0].split("=");
    						if(splitSplitGroupe.length>0)
    							{
    							if(menu.getGroupe()[j].equalsIgnoreCase(splitSplitGroupe[1]))
    								{listeMenuAffice.add(menu);}
    							}
    						}
    					}
    				}
    			}
    		return listeMenuAffice;
    		}
    	}
    J'ai une autre class (XMLInterface) qui va me chercher les infos dans un fichier 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
    31
     
    <dsiweb>
    	<domain>
    		<dc>ugr3.lan</dc>
    		<server>192.168.1.100</server>
    		<port>389</port>
    	</domain>
    	<domain>
    		<dc>eugr3.lan</dc>
    		<server>192.168.1.100</server>
    		<port>389</port>
    	</domain>
    	<menu>
    		<titre>Information</titre>
    		<lien>menuTOinfo</lien>
    		<groupe>nonidentifie</groupe>
    		<groupe>dsi</groupe>
    	</menu>
    	<menu>
    		<titre>Imprimante</titre>
    		<lien>menuTOimprimante</lien>
    		<groupe>dsi</groupe>
    		<groupe>groupe2</groupe>
    	</menu>
    	<menu>
    		<titre>GroupeAD</titre>
    		<lien>menuTOgroupeAD</lien>
    		<groupe>dsi</groupe>
    		<groupe>groupe2</groupe>
    	</menu>
    </dsiweb>
    d'où j'obtiens les liens...

  4. #4
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut
    je me demande si l'interprétation de la variable de retour se fait au bon moment, n'est il pas possible que la page jsp cherche à afficher sans attendre le retour complet de la variable?

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/02/2014, 21h04
  2. Problème avec HTML::Form
    Par Woufeil dans le forum Web
    Réponses: 1
    Dernier message: 05/06/2006, 14h59
  3. Problème avec html:radio
    Par cipotesi dans le forum Struts 1
    Réponses: 16
    Dernier message: 31/05/2006, 02h28
  4. Problème avec les libraires dynamiques
    Par Harzoglups dans le forum C
    Réponses: 3
    Dernier message: 17/01/2006, 16h21
  5. Problème avec la RTL dynamique
    Par lamojuli dans le forum C++Builder
    Réponses: 5
    Dernier message: 03/11/2004, 15h45

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