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] boutons radio


Sujet :

Struts 1 Java

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 162
    Points : 90
    Points
    90
    Par défaut [Struts-Layout] boutons radio
    Bonjour,

    Je suis certain que cela doit être tout bête, mais je cherche depuis hier !

    Je souhaite créer une liste de boutons radio par Struts-Layout. Je crée dans une JSP classique un formulaire, appuyé sur un bean. Malheureusement, une exception monte...

    J'ai regardé plusieurs exemples ainsi que la FAQ Struts-Layout, mais je ne trouve rien

    Je ne comprends pas mon erreur. Cependant, je me demande l'erreur ne viendrait pas de créer la liste des labels de boutons dans le constucteur du bean ?

    J'ai l'exception suivante :

    type Rapport d'exception

    message

    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

    exception

    org.apache.jasper.JasperException: Cannot find bean under name listeValeurs
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:460)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

    cause mère

    javax.servlet.ServletException: Cannot find bean under name listeValeurs
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:841)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:774)
    org.apache.jsp.pages.accueil_jsp._jspService(accueil_jsp.java:82)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

    cause mère

    javax.servlet.jsp.JspException: Cannot find bean under name listeValeurs
    fr.improve.struts.taglib.layout.util.LayoutUtils.getBeanFromPageContext(LayoutUtils.java:203)
    fr.improve.struts.taglib.layout.util.LayoutUtils.getIterator(LayoutUtils.java:302)
    fr.improve.struts.taglib.layout.field.OptionsTag.getIterator(OptionsTag.java:211)
    fr.improve.struts.taglib.layout.field.OptionsTag.doEndTag(OptionsTag.java:122)
    org.apache.jsp.pages.accueil_jsp._jspx_meth_layout_005foptions_005f0(accueil_jsp.java:245)
    org.apache.jsp.pages.accueil_jsp._jspx_meth_layout_005fradios_005f0(accueil_jsp.java:218)
    org.apache.jsp.pages.accueil_jsp._jspx_meth_layout_005fform_005f0(accueil_jsp.java:184)
    org.apache.jsp.pages.accueil_jsp._jspx_meth_layout_005fhtml_005f0(accueil_jsp.java:113)
    org.apache.jsp.pages.accueil_jsp._jspService(accueil_jsp.java:75)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    Voici la classe MainCinqCartesForm, le bean :

    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    public class MainCinqCartesForm extends ActionForm {
    	private Carte C1 = new Carte();
    	private Carte C2 = new Carte();
    	private Carte C3 = new Carte();
    	private Carte C4 = new Carte();
    	private Carte C5 = new Carte();
     
    	private ArrayList<String>ListeValeurs = new ArrayList<String>();
    	private ArrayList<String>ListeCouleurs = new ArrayList<String>();
     
    	private int valeur;
    	private int couleur;
     
    	public MainCinqCartesForm() {
    		super();
    		for (int i = 0; i < Constantes.Valeurs.length; i ++)
    			this.ListeValeurs.add(Constantes.Valeurs[i]);
    		for (int i = 0; i < Constantes.Couleurs.length; i ++)
    			this.ListeCouleurs.add(Constantes.Couleurs[i]);
    	}
     
    	public Carte getC1() {
    		return C1;
    	}
     
    	public void setC1(Carte c1) {
    		C1 = c1;
    	}
     
    	public Carte getC2() {
    		return C2;
    	}
     
    	public void setC2(Carte c2) {
    		C2 = c2;
    	}
     
    	public Carte getC3() {
    		return C3;
    	}
     
    	public void setC3(Carte c3) {
    		C3 = c3;
    	}
     
    	public Carte getC4() {
    		return C4;
    	}
     
    	public void setC4(Carte c4) {
    		C4 = c4;
    	}
     
    	public Carte getC5() {
    		return C5;
    	}
     
    	public void setC5(Carte c5) {
    		C5 = c5;
    	}
     
    	public ArrayList<String> getListeCartes() {
    		return ListeValeurs;
    	}
     
    	public void setListeCartes(ArrayList<String> listeCartes) {
    		ListeValeurs = listeCartes;
    	}
     
    	public ArrayList<String> getListeCouleurs() {
    		return ListeCouleurs;
    	}
     
    	public void setListeCouleurs(ArrayList<String> listeCouleurs) {
    		ListeCouleurs = listeCouleurs;
    	}
     
    	public int getCouleur() {
    		return couleur;
    	}
     
    	public void setCouleur(int couleur) {
    		this.couleur = couleur;
    	}
     
    	public ArrayList<String> getListeValeurs() {
    		return ListeValeurs;
    	}
     
    	public void setListeValeurs(ArrayList<String> listeValeurs) {
    		ListeValeurs = listeValeurs;
    	}
     
    	public int getValeur() {
    		return valeur;
    	}
     
    	public void setValeur(int valeur) {
    		this.valeur = valeur;
    	}
    }
    La classe Carte :
    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
     
    public class Carte {
     
    	private String couleur;
    	private String valeur;
    	private int force;
     
     
    	public Carte(String couleur, String valeur, int force) {
    		super();
    		this.couleur = couleur;
    		this.valeur = valeur;
    		this.force = force;
    	}
     
    	public Carte(String couleur, String valeur) {
    		this(couleur, valeur, 0);
    	}
     
    	public Carte() {
    		this("", "", -1);
    	}
     
    	public String getCouleur() {
    		return couleur;
    	}
    	public void setCouleur(String couleur) {
    		this.couleur = couleur;
    	}
    	public String getValeur() {
    		return valeur;
    	}
    	public void setValeur(String valeur) {
    		this.valeur = valeur;
    	}
    	public int getForce() {
    		return force;
    	}
    	public void setForce(int force) {
    		this.force = force;
    	}
     
    	public String toString() {
    		return this.valeur + " de " + this.couleur; 
    	}
    }
    La classe Constantes :
    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
     
    public class Constantes {
    	public static final String _AS = "As";
    	public static final String Couleurs[]= {"Carreau", "Coeur", "Pique", "Trèfle"};
    	public static final String Valeurs[] = {"Deux", "Trois", "Quatre", "Cinq", "Six", "Sept", "Huit", "Neuf", "Dix", "Valet", "Dame", "Roi", _AS};
    	public static final int Force[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
     
    	/* Pour comparer */
    	public static final int PLUS_FORT = 1;
    	public static final int EGAL = 0;
    	public static final int PLUS_PETIT = -1;
     
    	/* On sait jamais, ça peut servir ! */
    	public static final int TAILLE_MAIN = 5;
     
    	/* Les combinaisons */
    	public static final int QUINTE_FLUSH = 8;
    	public static final int CARRE = 7;
    	public static final int FULL = 6;
    	public static final int COULEUR = 5;
    	public static final int QUINTE = 4;
    	public static final int BRELAN = 3;
    	public static final int DEUX_PAIRES = 2;
    	public static final int PAIRE = 1;
    	public static final int CARTE_ELEVEE = 0;
    	public static final String Comb_Labels[] = {"Carte élevée", "Paire", "Deux paires", "Brelan", "Quinte", "Couleur", "Full", "Carré", "Quinte Flush"};
    	public static final int Comb_Force[] = {CARTE_ELEVEE, PAIRE, DEUX_PAIRES, BRELAN, QUINTE, COULEUR, FULL, CARRE, QUINTE_FLUSH};
    }
    Voici la 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
    22
    23
    24
    25
     
    <%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/tld/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/tld/struts-layout.tld" prefix="layout" %>
     
    <layout:html>
    <head>
    	<title><bean:message key="welcome.title"/></title>
    </head>
    <body>
    	<h1><bean:message key="welcome.heading"/></h1>
    	<layout:form action="/accueil">
    		<table>
    			<tr>
    				<td>Valeurs : </td>
    				<td>
    					<layout:radios property="valeur">
    						<layout:options name="listeValeurs"/>
    					</layout:radios>				
    				</td>
    			</tr>
    		</table>
    	</layout:form>
    </body>
    </layout:html>
    Et enfin, 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
    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
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
     
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
              "http://struts.apache.org/dtds/struts-config_1_3.dtd">
     
    <struts-config>
     
     
    <!-- ================================================ Form Bean Definitions -->
     
        <form-beans>
        	<form-bean name="MainCinqCartesForm" type="bean.MainCinqCartesForm"/>
        </form-beans>
     
     
    <!-- ========================================= Global Exception Definitions -->
     
        <global-exceptions>
            <!-- sample exception handler
            <exception
                key="expired.password"
                type="app.ExpiredPasswordException"
                path="/changePassword.jsp"/>
            end sample -->
        </global-exceptions>
     
     
    <!-- =========================================== Global Forward Definitions -->
     
        <global-forwards>
        	<forward name="/accueil" path="/accueil.do"/>
        </global-forwards>
     
     
    <!-- =========================================== Action Mapping Definitions -->
     
        <action-mappings>
        	<action path="/accueil" name="MainCinqCartesForm" type="servlets.Accueil"/>
        </action-mappings>
     
     
    <!-- ======================================== Message Resources Definitions -->
     
        <message-resources parameter="MessageResources" />
     
     
    <!-- =============================================== Plug Ins Configuration -->
     
      <!-- ======================================================= Tiles plugin -->
     
     
     
      <!-- =================================================== Validator plugin -->
     
      <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property property="pathnames" value="/org/apache/struts/validator/validator-rules.xml, /WEB-INF/validation.xml"/>
    	<plug-in className="fr.improve.struts.taglib.layout.workflow.LayoutPlugin"/>
      </plug-in>
     
    </struts-config>

  2. #2
    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
    En codant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <layout:options name="listeValeurs"/>
    Struts-Layout va chercher un objet listeValeurs dans le scope et ne le trouve pas tout simplement parce que c'est le form-bean ayant pour propriété listeValeurs qui est dans le scope.

    Il faut donc plutôt coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <layout:options property="listeValeurs"/>
    Il n'est pas utile de mettre l'attribut name parce que le tag layout:options étant dans un tag layout:form, name a pour valeur par défaut le nom du form-bean, soit dans ton cas MainCinqCartesForm.
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 162
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par c_nvy Voir le message

    Il faut donc plutôt coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <layout:options property="listeValeurs"/>
    Il n'est pas utile de mettre l'attribut name parce que le tag layout:options étant dans un tag layout:form, name a pour valeur par défaut le nom du form-bean, soit dans ton cas MainCinqCartesForm.
    Et encore une fois, ma chère c_nvy, tu as mis dans le mille !

    Je savais bien que c'était tout bête, et en plus, je connais bien la différence entre les attributs name et property ! Quand on s'acharne des heures durant sur un problème, on en perd sa lucidité...

    Merci mille fois !

  4. #4
    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 DomIII Voir le message
    Merci mille fois !
    De rien.
    Modératrice Java - Struts, Servlets/JSP, ...

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2010, 09h44
  2. Réponses: 2
    Dernier message: 31/03/2009, 09h01
  3. [Struts-Layout] pager et bouton radio
    Par dams78 dans le forum Struts 1
    Réponses: 7
    Dernier message: 20/01/2009, 10h01
  4. [struts layout]radio boutons
    Par david06600 dans le forum Struts 1
    Réponses: 7
    Dernier message: 06/12/2006, 16h31
  5. Réponses: 1
    Dernier message: 29/09/2006, 12h00

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