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] problème de checkbox dans layout:collection


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 12
    Points
    12
    Par défaut [Struts-Layout] problème de checkbox dans layout:collection
    Bonjour,
    je travaille avec struts-layout et j'ai un problème avec l'affichage d'une collection d'objets avec des cases à cocher pour une validation de ceux qui sont cochés, j'ai fait le nécessaire mais ça ne marche pas.
    J'ai toujours le message :
    [19/11/08 13:59:42:810 GMT] 195dc826 WebGroup E SRVE0026E: [Erreur de servlet]-[]: java.lang.NullPointerException
    at org.apache.commons.beanutils.PropertyUtils.getIndexedProperty(PropertyUtils.java:515)......
    Je vous donnes mes composants:
    -ma page d'affichage 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
    40
    41
    42
    <layout:form action="validation_perLot.do" styleClass="FORM" key="Validation des Objets Communs"  width="100%">
     
    		<layout:collection name="objetCommunLotBean" property="objComLot2V" selectName="selectedRecordRef" selectProperty="refObjetCommun" selectType="checkbox" styleClass="FORM" align="center" width="100%" >
     
    				<layout:collectionItem title="Ref° Objet" property="refObjetCommun"  />
    				<layout:collectionItem title="Libelle Objet" property="libelleObjet" />	
    				<layout:collectionItem title="Type Objet" property="commentaire" />									
    				<layout:collectionItem title="Version" property="version"/>									
    				<layout:collectionItem title="Statut" property="statut"/>	
    				<layout:collectionItem title="Domaine" property="domaine"/>									
    				<layout:collectionItem title="Propriétaire" property="person.matricule"/>									
    				<layout:collectionItem title="Langage source" property="langageSource"/>									
    				<layout:collectionItem title="Description" property="description" />									
    				<layout:collectionItem title="Emplacement" property="emplacement"/>			
    				<layout:collectionItem title="Nom d'appel" property="callName"/>									
    				<layout:collectionItem title="Input" property="input"/>									
    				<layout:collectionItem title="Output" property="output"/>									
    				<layout:collectionItem title="Exemple d'appel" property="callExample"/>									
    				<layout:collectionItem title="date de Création" property="dateCreation"/>									
    				<layout:collectionItem title="date saisie" property="dateSaisie"/>									
    				<layout:collectionItem title="date de Maj" property="dateMaj"/>																																				
     
    		</layout:collection>
     
     
     
    <div align="center">
    	<TABLE border="0" align="center">
    		<TBODY>
    			<TR>
    				<TD><html:submit style="width: 150;" >
    						<bean:message key="button.submit" />
    					</html:submit>
    				</TD>
    			</TR>
    		</TBODY>
    	</TABLE>
     
    </div>	
     
     
    </layout:form>
    mes ActionForm :
    1) pour récupérer les valeurs de l'attribut "selectProperty" du tag layout collection correspondant aux cases cochées:
    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
    public class Check2validBean extends ActionForm {
     
    	private String[] selectedRecordRef ;
     
    	public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest){
    		ActionErrors erreurs = new ActionErrors();
     
    		return erreurs ;
     
    		}
     
    	public void reset(ActionMapping mapping, HttpServletRequest request){
     
    		}	
     
     
    	/**
             * @return
             */
    	public String[] getSelectedRecordRef() {
    		return selectedRecordRef;
    	}
     
    	/**
             * @param strings
             */
    	public void setSelectedRecordRef(String[] strings) {
    		selectedRecordRef = strings;
    	}
     
    }
    2) pour récupérer la listes des objets à afficher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class ObjetCommunLotBean extends ActionForm {
     
    	private List objComLot2V ;
    getter and setter


    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
    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
    /*
     * Created on 7 oct. 08
     *
     * To change the template for this generated file go to
     * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
     */
    package ma.rami.controller;
     
    import java.io.IOException;
    import java.util.Collection;
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.List;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import ma.rami.util.HibernateUtil;
    import ma.rami.view.Check2validBean;
    import ma.rami.view.ObjetCommunLotBean;
     
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionError;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.actions.DispatchAction;
    import org.hibernate.Session;
     
     
    /**
     * @author u113917
     *
     * To change the template for this generated type comment go to
     * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
     */
    public class CheckLotOCAction extends Action {
     
    	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    		String target="failed" ;
    		ActionErrors erreurs = new ActionErrors();
    		String lgSource ="" ;
     
    		Session session= null ;
    		session = HibernateUtil.getCurrentSession();
     
    		try{
     
    		LinkedList bridge_lang=new LinkedList();
     
    		List results = session.createQuery("from ObjetCommun obCom where upper(obCom.statut)!='VALIDE'").list();
     
    		if(results.size()==0){
    			erreurs.add("obcv", new ActionError("objet.valide.all"));
    			saveErrors(request, erreurs);
     
    		}else{
     
     
     
     
    				ObjetCommunLotBean ocLot = (ObjetCommunLotBean)form ;
    				ocLot.setObjComLot2V(results) ;
     
     
     
    				ocLot.setSelectedRecordRef(new String[results.size()]);			
     
     
     
    				target="success";
     
    		}
    		}catch(Exception e){
    			e.printStackTrace();
    			erreurs.add("EmptyOC", new ActionError("objet.init.empty"));
    			saveErrors(request, erreurs);
     
    		}finally{
    				HibernateUtil.closeSession();
    		}
     
    		return mapping.findForward(target);
    	}
     
    }
    Merci de m'aider à résoudre mon problème de me donner un coup de main

  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
    Pour pouvoir récupérer les valeurs cochées dans la propriété selectedRecordRef via le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <layout:collection name="objetCommunLotBean" property="objComLot2V" selectName="selectedRecordRef" selectProperty="refObjetCommun" selectType="checkbox" styleClass="FORM" align="center" width="100%" >
    la propriété selectedRecordRef doit être une propriété du form-bean objetCommunLotBean et l'Action de path /validation_perLot doit être liée à ce form-bean.

    Il faut donc que tu aies le même form-bean pour l'Action qui s'exécute avant l'affichage du formulaire (celle qui initialise la liste d'objets à afficher) et l'Action qui s'exécute au submit du formulaire (celle qui va récupérer les valeurs des checkbox cochées).
    Et le scope de ce form-bean doit être égal à session dans le mapping des deux Actions.

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 12
    Points
    12
    Par défaut
    Bonjour et Merci de m'avoir répondu,

    voilà j'ai appliqué tous ces consignes, et j'ai le message suivant:
    E SRVE0026E: [Erreur de servlet]-[]: java.lang.NullPointerException
    at org.apache.commons.beanutils.PropertyUtils.getIndexedProperty(PropertyUtils.java:515)......

  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
    Mais quel code utilises-tu pour récupérer les valeurs des checkbox cochées ?

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Mais quel code utilises-tu pour récupérer les valeurs des checkbox cochées ?
    voici le code que j'utilise pour tester le caching des valeurs:

    .....
    String[] tab = obj2Valid.getSelectedRecordRef() ;

    for(int i=0; i<tab.length; i++ )
    System.out.println("valeurs cochés: " + tab[i]);

    Mais maintenant ça marche quand j'ai utilisé le même bean pour l'action d'affichage de la collection, et l'action de validation des valeurs cochées.
    de ce fait, le problème s'est résolu quand j'ai parcouru uniquement le contenu non null de tab et donc j'ai pu valider uniquement les valeurs cochés en parcourant les valeurs non nulles.

    Merci beaucoup à vous et à tous les membre du forum, sans vous je n'aurais pas pu pas résoudre mon problème.

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par nyrami Voir le message
    voici le code que j'utilise pour tester le caching des valeurs:

    .....
    String[] tab = obj2Valid.getSelectedRecordRef() ;

    for(int i=0; i<tab.length; i++ )
    System.out.println("valeurs cochés: " + tab[i]);

    Mais maintenant ça marche quand j'ai utilisé le même bean pour l'action d'affichage de la collection, et l'action de validation des valeurs cochées.
    de ce fait, le problème s'est résolu quand j'ai parcouru uniquement le contenu non null de tab et donc j'ai pu valider uniquement les valeurs cochés en parcourant les valeurs non nulles.

    Merci beaucoup à vous et à tous les membre du forum, sans vous je n'aurais pas pu pas résoudre mon problème.

    excusez moi mai j'ai encore une petite question si vous permettez, comment élargir les colonnes de la collection: j'ai utilisé l'attribut "WIDTH", mais ça ne marche pas
    pour le champ "Description" correspond à un text et à l'affichage il apparait presque mot au dessous d'un mot dans la colonne (il ne peut même pas afficher une phrase de plus d'un mots) exemple : le mot "En cours" est affiché en deux lignes de la colonne ce donne un look désagréable.


    voici mon code dans la page 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
    40
     
    <body  style="color: white; background-image: url('images/PaperTexture.gif');">        
     
        <layout:form action="validation_perLot.do" styleClass="FORM" key="Validation des Objets Communs" >
     
            <layout:collection name="objetCommunLotBean" property="objComLot2V"  selectProperty="refObjetCommun"  selectName="selectedRecordRef"  id="refObjetCommun" selectType="checkbox" styleClass="FORM" align="left">
     
                    <layout:collectionItem title="Ref° Objet" property="refObjetCommun"  /> 
                    <layout:collectionItem title="Libelle Objet" property="libelleObjet" />    
                     <layout:collectionItem title="Type Objet" property="commentaire" />                            
                    <layout:collectionItem title="Version" property="version"  />                            
                    <layout:collectionItem title="Statut" property="statut" />                
                    <layout:collectionItem title="Domaine" property="domaine"/>                                    
                    <layout:collectionItem title="Propriétaire" property="person.matricule"/>                                     
                    <layout:collectionItem title="Langage source" property="langageSource"/>                                  
                    <layout:collectionItem title="Description" property="description"/>                                  
                    <layout:collectionItem title="Emplacement" property="emplacement"/>              
                    <layout:collectionItem title="Nom d'appel" property="callName"/>                                      
                    <layout:collectionItem title="Input" property="input"/>                                      
                    <layout:collectionItem title="Output" property="output"/>                                      
                    <layout:collectionItem title="Exemple d'appel" property="callExample"/>                                      
                    <layout:collectionItem title="date de Création" property="dateCreation"/>                                 
                    <layout:collectionItem title="date saisie" property="dateSaisie"/>                                      
                    <layout:collectionItem title="date de Maj" property="dateMaj"/>                                                                                                                                                  
     
            </layout:collection>
     
            <div align="left">
                <TABLE border="0" align="left">
                        <TR>
                            <TD><html:submit style="width: 100;background: url('images/valid.bmp') " value=" "  styleClass="inp">
                                </html:submit>
                            </TD>
                        </TR>
                </TABLE>
            </div>    
     
        </layout:form>
     
    </body>

Discussions similaires

  1. [Struts-Layout] un champ modifiable dans une collection
    Par john_wili dans le forum Struts 1
    Réponses: 6
    Dernier message: 14/12/2008, 19h02
  2. [Struts-Layout] un champs modifiable dans une collection
    Par john_wili dans le forum Struts 1
    Réponses: 10
    Dernier message: 24/11/2008, 21h25
  3. Problème de checkbox dans une boucle
    Par LeLapinVengeur dans le forum Struts 1
    Réponses: 5
    Dernier message: 01/12/2006, 17h07
  4. [SQL] Problème résultat checkbox dans requête SQL
    Par Skeud007 dans le forum PHP & Base de données
    Réponses: 20
    Dernier message: 02/07/2006, 15h02
  5. Réponses: 4
    Dernier message: 29/07/2005, 11h47

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