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

Spring Web Java Discussion :

Remplir une liste déroulante


Sujet :

Spring Web Java

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 194
    Points : 118
    Points
    118
    Par défaut Remplir une liste déroulante
    Bonjour, oui le sujet semble assez bête mais voilà plusieurs jours que j'essaie tant bien que mal de remplir une simple liste déroulante en utilisant Spring MVC.
    Voici l'un de mes plus gros problème : le mot clé "path" !
    J'ai constamment une erreur sur lui quelque soit le nom que je lui donne et pas moyen de trouver une réponse claire sur le net (3 jours que je me balade de sites français et anglais).

    Erreur affiché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.apache.jasper.JasperException: org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/jsp/pages/maraicher/new.jsp at line 10
    la ligne 10 est la ligne où se trouve "path"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
     
    <div class="container">
    	<!-- Formulaire de saisie d'un Maraicher--> 
    	<form:form method="post" action="">
    		<table>
    			<tr>
    				<td>Liste des maraichers :</td>
    				<td colspan="3">
    					<form:select path="nom">
    						<form:options items="${listOption}" itemValue="id" itemLabel="nom" />
    					</form:select>
    				</td> 
    			</tr>
    Est-ce que quelqu'un peut m'expliquer ce qu'est ce "path" et où doit se trouver sa définition ? Contrôleur ? Classe ?
    Si tout semble bien marcher c'est que vous avez oublié quelque chose !

  2. #2
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    Bonjour,

    Le message indique la ligne 10, mais j'ai un doute sur le fait que cela vienne du "<form:select path="nom">"... Que se passe t'il en ajoutant des lignes vides au niveau de la ligne 2, est ce que le message indique toujours la ligne 10?

    De quel type est l'objet "listOption" et est ce qu'il contient bien des éléments avec attributs "id" et "nom" et les getters/setters qui vont bien?

    Bon courage...
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 194
    Points : 118
    Points
    118
    Par défaut
    j'ai trouvé une solution bien que cela ne soit pas celle que je recherchais et qui me pose encore quelques soucis :

    A la place d'un "<form:select>" je pars sur l'idée d'utiliser le "<c:foreach>"
    dont voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <select>
       <c:forEach var="map" items="${priorityList}">
          <option>${map}</option>
       </c:forEach>
    </select>
    Et là ça fonctionne ! En passant une List en paramètre
    Mais viens le problème de séparer l'id du nom...
    J'ai essayé de passer un HashMap en paramètre mais je n'arrive pas à séparer la clé de sa valeur, elles apparaissent ensemble séparées par un "=".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Map<String, String> listeMar = new HashMap<String, String>();
    listeMar.put("1", "Toto le bricolo");
    listeMar.put("2", "Aranud le glandeur");
    listeMar.put("3", "Fred l'astère");
    model.addAttribute("priorityList", maraichers);
    Comment séparer dans ma page JSP ces 2 informations ?

    ----

    Enfin pour répondre à tes questions, si j'ajoute des lignes vides, des balises html ou autre l'erreur reste sur la ligne du "<form:select path="nom">".

    Pour ce qui est de l'objet "listOption" j'ai essayé plusieurs chose et celle qui me semblait le plus juste était celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    @RequestMapping(value = "/maraicher", method = RequestMethod.GET)
    	public String maraicher(Model model) {
     
    		List<Maraicher> mar = new ArrayList<Maraicher>();
     
    		mar.add(new Maraicher(1, "Toto le bricolo"));
    		mar.add(new Maraicher(2, "Aranud le glandeur"));
    		mar.add(new Maraicher(3, "Fred l'astère"));
     
    		model.addAttribute("listOption", mar);
    //...
    Et pour la Classe Maraicher rien de bien compliquer
    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
     
    public class Maraicher {
     
    	private int id;
    	private String nom;
     
    	public Maraicher(int id, String nom){
    		this.id = id;
    		this.nom = nom;
    	}
     
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getNom() {
    		return nom;
    	}
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
     
    }
    Si tout semble bien marcher c'est que vous avez oublié quelque chose !

  4. #4
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    Bonjour,

    Pour les options du foreach, il doit etre possible de faire quelquechose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <c:forEach var="map" items="${priorityList}">
       <option value='<c:out value="${map.id}"/>'><c:out value="${map.nom}"/></option>
    </c:forEach>
    Mais je ne vois pas pourquoi l'autre solution ne fonctionne pas? Peut etre que quelques lignes supplémentaires de la stack d'erreur pourrait aider?

    Bon courage...
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 194
    Points : 118
    Points
    118
    Par défaut
    Non ça ne marche pas ta solution par contre en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <c:forEach var="map" items="${priorityList}">
       <option value='<c:out value="${map.key}"/>'><c:out value="${map.value}"/></option>
    </c:forEach>
    ça fait exactement ce que je voulais

    Pour ce qui est de la Stacktrace toujours imbuvable là voilà :
    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
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    type Rapport d''exception
     
    message org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/jsp/pages/maraicher/new.jsp at line 11
     
    description Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête.
     
    exception
     
    org.apache.jasper.JasperException: org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/jsp/pages/maraicher/new.jsp at line 11
     
    8: 			<tr>
    9: 				<td>Liste des maraichers :</td>
    10: 				<td colspan="3">
    11: 					<form:select path="nom">
    12: 						<form:options items="${listOption}" itemValue="id" itemLabel="nom" />
    13: 					</form:select>
    14: 					<select>
     
     
    Stacktrace:
    	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
    	org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
    	org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
    	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
    	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
    	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    cause mère
     
    org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/jsp/pages/maraicher/new.jsp at line 11
     
    8: 			<tr>
    9: 				<td>Liste des maraichers :</td>
    10: 				<td colspan="3">
    11: 					<form:select path="nom">
    12: 						<form:options items="${listOption}" itemValue="id" itemLabel="nom" />
    13: 					</form:select>
    14: 					<select>
     
     
    Stacktrace:
    	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:465)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    	org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:954)
    	org.apache.jsp.WEB_002dINF.views.index_jsp._jspService(index_jsp.java:95)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
    	org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
    	org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
    	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
    	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
    	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    cause mère
     
    java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'command' available as request attribute
    	org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141)
    	org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:178)
    	org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:198)
    	org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:164)
    	org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:151)
    	org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:142)
    	org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:126)
    	org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:421)
    	org.springframework.web.servlet.tags.form.SelectTag.writeTagContent(SelectTag.java:199)
    	org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102)
    	org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79)
    	org.apache.jsp.WEB_002dINF.views.jsp.pages.maraicher.new_jsp._jspx_meth_form_005fselect_005f0(new_jsp.java:196)
    	org.apache.jsp.WEB_002dINF.views.jsp.pages.maraicher.new_jsp._jspx_meth_form_005fform_005f0(new_jsp.java:118)
    	org.apache.jsp.WEB_002dINF.views.jsp.pages.maraicher.new_jsp._jspService(new_jsp.java:78)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    	org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:954)
    	org.apache.jsp.WEB_002dINF.views.index_jsp._jspService(index_jsp.java:95)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
    	org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
    	org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
    	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
    	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
    	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/7.0.50.
    Si tout semble bien marcher c'est que vous avez oublié quelque chose !

  6. #6
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    C'est pas mal déjà si il y a une solution qui fonctionne!

    Et pour l'autre, je crois que je vois quelque chose... La ligne "java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'command' available as request attribute" indique un souci de binding du modèle d'objet à utiliser. Et c'est à l'origine du problème de résolution de "path"...

    Ca peut peut être aider : http://article-stack.com/education/s...ory-apart.amty
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

Discussions similaires

  1. remplir une liste déroulante
    Par mademoizel dans le forum ASP
    Réponses: 19
    Dernier message: 08/03/2007, 16h33
  2. [Oracle] Remplir une liste déroulante avec une table
    Par CYCLOPE91440 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 26/12/2006, 15h26
  3. Réponses: 12
    Dernier message: 28/11/2006, 15h34
  4. Remplir une liste déroulante à partir d'un champ dans une pop up
    Par wiam26 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/08/2006, 16h42
  5. [débutant] Remplir une liste déroulante
    Par Floch dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/05/2006, 13h39

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