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 :

select et bean:define


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 31
    Par défaut select et bean:define
    Bonjour,
    Je suis débutant en Struts, j'ai une arrayliste de bean dans mon actionform et je voudrais afficher un des champs dans une liste select dans une page JSP.

    dans l action:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    request.setAttribute("listepass",listeform);
     
    		return mapping.findForward("goto");
    Dans la page JSP j'écris:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <logic:present name="listepass">
    	<bean:define id="laListeTypes" name="listepass" scope="request" />
    	<bean:size id="lnNbTypes" name="laListeTypes" />
    		<select size="1" name="type" class="data" style="width:240px"                                             id="leType">
    		  <option value="">(Choisissez)</option>
    		     <logic:iterate id="lType" name="laListeTypes">
    			   <bean:define id="lechamp" name="lType" property="id" type="String"/>
    			 <option value="<%=lechamp%>"><%=lechamp%></option>								
    		     </logic:iterate>
            </select>
    </logic:present>


    avant même de lancer l'application il y a une erreur "cannot resolve symbol lechamp" devant la ligne <option value="<%=lechamp%>"><%=lechamp%></option>


    SVP aidez moi!!!

  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
    Tu devrais plutôt utiliser le tag html:select comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <logic:present name="listepass">
      <html:select property="type">
        <html:option value="(Choisissez)"/>
        <html:options collection="listepass" property="id" labelProperty="id"/>
      </html:select>
    </logic:present>
    Dans ce cas, plus besoin d'utiliser le tag bean:define.

    Sans oublier de rajouter la directive taglib qui pointe sur struts-html.tld :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html" %>

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 31
    Par défaut pardon j ai pas bien collé struts-conf dans la réponse précédente
    Merci beaucoup pour votre aide et votre indulgence, mais quand j'ai mis le code que vous m'avez proposé, au lancement il n'y a pas d'erreur; par contre je n'obtients pas la liste dans ma page JSP. Je crois que je suis entrain de commetre une erreur un peu bête , alors je vais expliciter un peu plus:

    au départ il y a la page go.jsp, quand je submit, l'action go.do est donc exécuté, c'est là ou je rempli ma liste et j'ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    request.setAttribute("listepass",listeform);
    return mapping.findForward("goto");
    Le forward goto est supposé donc nous renvoyé a la page affiche.jsp ou devrait s'afficher notre liste, voila tout le code de affiche.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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     
     
    <html>
    <head>
    <base href="<%=basePath%>">
     
    <title>My JSP 'affiche.jsp' starting page</title>
     
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
     
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    </head>
     
    <body>
    this is a struts page. <br>
     
    <logic:present name="listepass">
    <html:select property="id">
    <html:option value="(Choisissez)"/>
    <html:options collection="listepass" property="id" labelProperty="id"/>
    </html:select>
    </logic:present>
     
    </body>
    </html>
    et pour struts-config.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <action
          attribute="goForm"
          input="/form/go.jsp"
          name="goForm"
          path="/go"
          scope="request"
          type="com.yourcompany.struts.action.GoAction">
          <forward name="goto" path="/affiche.jsp" />
        </action>
    Encore une fois merci beaucoup!

  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
    J'ai rajouté ceci dans ma réponse tout à l'heure.
    Comme tu étais en train de me répondre, tu ne l'as peut-être pas vu.
    Citation Envoyé par c_nvy
    Sans oublier de rajouter la directive taglib qui pointe sur struts-html.tld :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html" %>
    Sinon, la prochaine fois, pense à mettre les balises [CODE] pour rendre la discussion plus lisible.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 31
    Par défaut
    merci encore et pardon pour la gaffe.
    je l'ai rajouté comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    parce que le fichier struts-html est directement dans web-inf .
    seulement j'obtiens cette fois l'erreur:
    javax.servlet.ServletException: Cannot find bean under name org.apache.struts.taglib.html.BEAN
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
    org.apache.jsp.affiche_jsp._jspService(affiche_jsp.java:113)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service
    Merci pour votre disponibilité

  6. #6
    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
    Alors, essaie en remplaçant le html:options par un html:optionsCollection qui se code comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <logic:present name="listepass">
      <html:select property="id">
        <html:option value="(Choisissez)"/>
        <html:optionsCollection property="listepass" value="id" label="id"/>
      </html:select>
    </logic:present>
    Et si tu veux que le tag logic:present soit interpreté, il faut aussi rajouter ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 31
    Par défaut
    j'ai rajouté les deux balises mais j'obtiens toujours la méme erreur :
    Cannot find bean under name org.apache.struts.taglib.html.BEAN
    Entre temps j'ai fait ma petite recherche, on a déja proposé à quelqu'un sur ce forum de rajouter dans le fichier web.xml ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      <taglib>
        <taglib-uri>/WEB-INF/struts-html</taglib-uri>
        <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
      </taglib>
     
      <taglib>
        <taglib-uri>/WEB-INF/struts-logic</taglib-uri>
        <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
      </taglib>
    mais le fichier ne reconnait pas taglib et j'obtiens d'ailleurs toujours la même erreur.

  8. #8
    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
    Tu dois être en J2EE 1.4 vu que la balise <taglib> n'est pas reconnue dans le web.xml.
    En J2EE 1.4, les balises <taglib> doivent être dans une balise <jsp-config>.
    Mais ceci ne résoudra pas ton problème.

    Peux-tu montrer le code de ton Action GoAction ?
    Vu que tu as codé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("listepass",listeform);
    j'aimerais savoir ce que tu as mis dans listeform.

    Sinon, as-tu testé le html:optionsCollection comme je te l'ai indiqué précédemment ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        <html:optionsCollection property="listepass" value="id" label="id"/>
    PS : pense à mettre des balises [CODE].

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 31
    Par défaut
    oui j'ai essayé la deuxième formule avec optionsCollection mais ça donne la même chose.
    sinon voilà le code de mon action :

    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
    public class GoAction extends Action {
     
    	// --------------------------------------------------------- Instance Variables
     
    	// --------------------------------------------------------- Methods
     
    	/** 
             * Method execute
             * @param mapping
             * @param form
             * @param request
             * @param response
             * @return ActionForward
             */
    	public ActionForward execute(
    		ActionMapping mapping,
    		ActionForm form,
    		HttpServletRequest request,
    		HttpServletResponse response) {
     
    		GoForm goForm = (GoForm) form;
     
    		ArrayList listeform = new ArrayList();
    		Mybean bean1 = new Mybean();
    		bean1.setId("saad");
    		Mybean bean2 = new Mybean();
    		bean2.setId("imam");
     
    		listeform.add(bean1);
    		listeform.add(bean2);
     
    		request.setAttribute("listepass",listeform);
     
    		// TODO Auto-generated method stub
    		return mapping.findForward("goto");
    	}
     
    }

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 31
    Par défaut
    j'ai rajouté la balise <html:form> à ma page jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <html:form action="go.do">
    <logic:present name="listepass">
      <html:select property="id">
        <html:optionsCollection property="listepass" name="id" label="id"/>
      </html:select>
    </logic:present>
    </html:form>
    cette fois le problème devient :
    javax.servlet.ServletException: No getter method available for property type for bean under name org.apache.struts.taglib.html.BEAN
    sauf que mon bean contient une méthode getter pour le champ id:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    package com.yourcompany.struts.action;
     
    public class Mybean {
    public String id;
     
    public String getId() {
    	return id;
    }
     
    public void setId(String id) {
    	this.id = id;
    }
    }
    est ce que j'aurais mal compris l'attribut "property" de select? moi, j'y est mis le nom de l'attribut id du bean Mybean avec lequel je veux remplir la liste..

  11. #11
    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 pas vu que tu n'avais pas mis de tag html:form dans ta jsp.

    Normalement, dans ton Action, comme tu as codé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("listepass",listeform);
    le tag html:options devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <logic:present name="listepass">
      <html:select property="id">
        <html:option value="(Choisissez)"/>
        <html:options collection="listepass" property="id" labelProperty="id"/>
      </html:select>
    </logic:present>
    Sinon, dans l'attribut property du tag html:select, tu peux y mettre id si tu le souhaites, mais il ne faut pas oublier de coder getter et setter sur id dans l'ActionForm GoForm afin de pouvoir récupérer l'id sélecté.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 31
    Par défaut
    Madame, Mademoiselle,
    Chapeau
    Pour votre gentillesse, votre patience, votre indulgence, votre talent et votre dévouement!
    Vous n'êtes pas modératrice par hasard!
    Merci infiniment....

  13. #13
    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
    De rien.
    Bon courage pour la suite.

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

Discussions similaires

  1. Utilisation bean:define ?
    Par SrK dans le forum Struts 1
    Réponses: 15
    Dernier message: 13/06/2006, 17h02
  2. Réponses: 4
    Dernier message: 15/02/2006, 17h24
  3. [Struts] paramètre JS dans un bean:define
    Par Mrlud dans le forum Struts 1
    Réponses: 4
    Dernier message: 09/06/2005, 14h38
  4. Réponses: 4
    Dernier message: 19/04/2005, 13h42
  5. [Struts]pb de Bean define
    Par tscoops dans le forum Struts 1
    Réponses: 8
    Dernier message: 02/03/2005, 09h12

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