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] case à cocher


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Par défaut [Struts-Layout] case à cocher
    Bonjour,

    Je souhaite afficher un layout qui se présenterait comme ceci :

    une colonne avec une case a cocher, une colonne propriété
    (chaque ligne a un identifiant unique non présent à l'affichage)

    L'utilisateur après avoir coché une case clique sur un bouton qui traite (action lambda) l'enregistrement coché.

    Pour le moment j'ai un LAYOUT simple :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		<layout:collection name="listConsult"  id="consults" align="left" width="100%" >
    				<layout:collectionItem property="libelle"/>
    		</layout:collection>

    Je ne vois pas du tout comment faire dans ma JSP, avez vous un debut de solution pour moi?
    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
    Tu peux utiliser les attributs selectType, selectProperty et selectName du tag layout:collection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <layout:collection name="listConsult"  id="consults" selectName="selectedId" selectProperty="id" selectType="checkbox" align="left" width="100%" >
    	<layout:collectionItem property="libelle"/>
    </layout:collection>
    Ainsi, la propriété selectedId du formulaire contiendra les identifiants des lignes cochées.

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Par défaut
    Voici ce que j'ai codé :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <layout:collection name="listSymptomsChoisis"  id="symptomesid" selectName="selectedSympChoisiId" selectProperty="id" selectType="checkbox" align="left" width="100%" >
    	<layout:collectionItem property="libelle"/>
    </layout:collection>

    et déclaration de selectedSympChoisiId dans le formBean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private int selectedSympChoisiId;	
    public int getSelectedSympChoisiId() {
    		return selectedSympChoisiId;
    	}
     
    	public void setSelectedSympChoisiId(int selectedSympChoisiId) {
    		this.selectedSympChoisiId = selectedSympChoisiId;
    	}
    Je ne sais pas s'il fallait faire la déclaration ou pas mais comme il me disait qu'il ne trouvait pas les getters and setters...
    Toujours est-il que j'ai l'erreur suivante :
    java.lang.IllegalArgumentException: Property 'selectedSympChoisiId' is not indexed
    org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:429)
    org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:340)
    org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:684)
    org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715)
    org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:290)
    fr.improve.struts.taglib.layout.util.LayoutUtils.getBeanFromPageContext(LayoutUtils.java:208)
    fr.improve.struts.taglib.layout.collection.CollectionTag.isCurrentBeanSelected(CollectionTag.java:624)
    fr.improve.struts.taglib.layout.collection.CollectionTag.getDefaultAttributesForSelectionCell(CollectionTag.java:584)
    fr.improve.struts.taglib.layout.collection.CollectionTag.renderSelection(CollectionTag.java:593)
    fr.improve.struts.taglib.layout.collection.CollectionTag.renderItem(CollectionTag.java:519)
    fr.improve.struts.taglib.layout.collection.CollectionTag.addItem(CollectionTag.java:157)
    fr.improve.struts.taglib.layout.collection.BaseCollectionTag.addItem(BaseCollectionTag.java:346)
    fr.improve.struts.taglib.layout.collection.FastCollectionItemTag.doEndLayoutTag(FastCollectionItemTag.java:240)
    fr.improve.struts.taglib.layout.LayoutTagSupport.doEndTag(LayoutTagSupport.java:72)
    org.apache.jsp.private_.body.consultation_jsp._jspx_meth_layout_005fcollectionItem_005f2(consultation_jsp.java:704)
    org.apache.jsp.private_.body.consultation_jsp._jspx_meth_layout_005fcollection_005f1(consultation_jsp.java:674)
    org.apache.jsp.private_.body.consultation_jsp._jspx_meth_logic_005fnotEmpty_005f1(consultation_jsp.java:630)
    org.apache.jsp.private_.body.consultation_jsp._jspx_meth_html_005fform_005f1(consultation_jsp.java:537)
    org.apache.jsp.private_.body.consultation_jsp._jspx_meth_logic_005fnotEmpty_005f0(consultation_jsp.java:496)
    org.apache.jsp.private_.body.consultation_jsp._jspService(consultation_jsp.java:116)
    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)
    Sais tu ce qu'il me manque?

    Merci.

  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
    Comme tu peux cocher plusieurs checkbox, la propriété selectedSympChoisiId doit être de type String[] ou Integer[].

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Par défaut
    Maintenant :
    java.lang.NullPointerException
    org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:427)
    org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:340)
    org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:684)
    org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715)
    org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:290)
    fr.improve.struts.taglib.layout.util.LayoutUtils.getBeanFromPageContext(LayoutUtils.java:208)
    fr.improve.struts.taglib.layout.collection.CollectionTag.isCurrentBeanSelected(CollectionTag.java:624)
    fr.improve.struts.taglib.layout.collection.CollectionTag.getDefaultAttributesForSelectionCell(CollectionTag.java:584)
    fr.improve.struts.taglib.layout.collection.CollectionTag.renderSelection(CollectionTag.java:593)
    fr.improve.struts.taglib.layout.collection.CollectionTag.renderItem(CollectionTag.java:519)
    fr.improve.struts.taglib.layout.collection.CollectionTag.addItem(CollectionTag.java:157)
    fr.improve.struts.taglib.layout.collection.BaseCollectionTag.addItem(BaseCollectionTag.java:346)
    fr.improve.struts.taglib.layout.collection.FastCollectionItemTag.doEndLayoutTag(FastCollectionItemTag.java:240)
    fr.improve.struts.taglib.layout.LayoutTagSupport.doEndTag(LayoutTagSupport.java:72)
    org.apache.jsp.private_.body.consultation_jsp._jspx_meth_layout_005fcollectionItem_005f2(consultation_jsp.java:705)
    org.apache.jsp.private_.body.consultation_jsp._jspx_meth_layout_005fcollection_005f1(consultation_jsp.java:674)
    org.apache.jsp.private_.body.consultation_jsp._jspx_meth_logic_005fnotEmpty_005f1(consultation_jsp.java:631)
    org.apache.jsp.private_.body.consultation_jsp._jspx_meth_html_005fform_005f1(consultation_jsp.java:537)
    org.apache.jsp.private_.body.consultation_jsp._jspx_meth_logic_005fnotEmpty_005f0(consultation_jsp.java:496)
    org.apache.jsp.private_.body.consultation_jsp._jspService(consultation_jsp.java:116)
    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)

    J'ai du mal a comprendre ce qui doit aller dans selectProperty. C'est une donnée du bean passé en session? Ou une valeur qui sera renseignée lorsque l'utilisateur coche la case?

  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
    La propriété spécifiée dans l'attribut selectProperty doit être une propriété de l'objet dont est constitué la liste.
    Donc, si id est bien une propriété de l'objet, lorsqu'un utilisateur cochera une case (ou plusieurs cases), tu retrouveras la (ou les) valeur(s) des id pour les lignes cochées dans selectedSympChoisiId.

    Sinon, en ce qui concerne le NullPointerException, il faut initialiser le tableau selectedSympChoisiId dans la méthode reset de l'ActionForm.
    Donc, si selectedSympChoisiId est un tableau d'Integer, il faut coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void reset(ActionMapping mapping, HttpServletRequest request)
    {
      this.selectedSympChoisiId=new Integer[0] ;
    }

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/06/2010, 17h39
  2. [Struts-Layout] case à cocher et layout option
    Par pigpen dans le forum Struts 1
    Réponses: 10
    Dernier message: 03/06/2009, 13h34
  3. [struts layout] case à cocher
    Par david06600 dans le forum Struts 1
    Réponses: 5
    Dernier message: 02/01/2007, 12h16
  4. [struts layout]case à cocher
    Par david06600 dans le forum Struts 1
    Réponses: 12
    Dernier message: 01/12/2006, 11h13
  5. [Struts layout]case a cocher
    Par david06600 dans le forum Struts 1
    Réponses: 8
    Dernier message: 26/09/2006, 15h44

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