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] Datagrid exemple complet


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Par défaut [Struts-Layout] Datagrid exemple complet
    Bonjour et bonne année a tous.
    Je souhaite afficher une grille de données sous forme d'un tableau à plusieurs dimensions a partir d'une BDD avec la possibilité de modifier et enregistrer les données de chaque champ :
    Mon application (pour les RH) est : une table de 5 colonnes [position] (ingénieur, Technicien, Commerciale....etc), [salaire minimum] (chiffe modifiable formaté en euros), [salaire moyen], [salaire maximum], [type de contrat] (CDD, CDI...).

    le tout avec un petit menu de recherche selon (type de contrat et le salaire max) dans la même JSP.

    Le tableau ressemble à ceci avec seulement les chiffres modifiable
    --------------------------------------------------------------------------
    |Position | Salaire minimum| Salaire moyen| Salaire maximum| Type de contrat|
    --------------------------------------------------------------------------
    |ingenieur | 45 000,00 Eur | 55 000,00 | 75 000,00 | CDD |
    --------------------------------------------------------------------------
    |technicien | 25 000,00 | 35 000,00 | 55 000,00 | CDI |
    --------------------------------------------------------------------------

    - J'ai suivi l'exemple du tutorial mais ça ne marche pas comme il faut, je ne sais pas si j'ai oublié qq chose.

    Voici le code au complet:

    FORM BEAN avec les GET/SET

    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
    package com.foo.datagrid;
     
    import org.apache.struts.action.ActionForm;
    import fr.improve.struts.tagli.layout.datagrid.Datagrid;
     
    public class DatagridForm extends ActionForm {
    	private Datagrid datagrid;
     
    	public void setDatagrid(Datagrid in_datagrid) {
    		datagrid = in_datagrid;
    	}
    	public Datagrid getDatagrid() {
    		return datagrid;
     	}
     
    }
    L'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
    package com.foo.datagrid;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    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 fr.improve.struts.taglib.layout.datagrid.Datagrid;
     
    public class DatagridAction extends DispatchAction {
     
    	public ActionForward display(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse reponse) {	
    		DatagridForm lc_form = (DatagridForm) actionForm;
     
    		// Get an object list.
    		List salaireList = salaire.ListSalaire();
     
    		// Create a datagrid.
    		Datagrid lc_datagrid = Datagrid.getInstance();
     
    		// Set the bean class for new objects. We suppose SomeBean is the class of the object in the List aList.
    		lc_datagrid.setDataClass(Salaire.class);
     
    		// Set the data
    		lc_datagrid.setData(salaireList);
     
    		// Initialize the form
    		lc_form.setDatagrid(lc_datagrid);
     
    		// Forward to the jsp.
    		return actionMapping.findFoward("jsp");
    	}

    Mon DataAccess pour la BDD


    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
    public DataGridForm() throws Exception {
            ArrayList salaires = new ArrayList();
            Salaire objSalaire;
     
    datagrid = Datagrid.getInstance();
    	datagrid.setDataClass(salaire.class);
    	datagrid.setData(liste);
     
            ResultSet rs = null;
            CallableStatement callStmt = null;
     
            ctx.setMethodName("DataGridForm");
            ctx.setStoredProcedureName("SALAIRE_GET");
     
            callStmt = con.prepareCall("CALL SALAIRE_GET()");
     
            callStmt.execute();
            rs = callStmt.getResultSet();
     
            while (rs != null && rs.next()) {
                objSalaire = new salaire ();
                objSalaire.setPosition(rs.getString("Position"));
                objSalaire.setSalaireMin(rs.getDouble("Salaire Minimum"));
                objSalaire.setSalaireMoy(rs.getDouble("Salaire Moyen"));
                objSalaire.setSalaireMax(rs.getDouble("Salaire Maximum"));
                objSalaire.setTypeContrat(rs.getString("Type de Contrat"));
                salaire.add(objSalaire);
            }
     
            if (rs != null) {
                rs.close();
                rs = null;
            }
            if (callStmt != null) {
                callStmt.close();
                callStmt = null;
            }
     
            return salaires;
        }
    ma class salaire 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
    Public class salaire {
    	Protected String position;
    	Protected Double salaireMin;
            Protected Double salaireMoy;
            Protected Double salaireMax;
            Protected String typeContrat;
     
    Public String getPosition(){
            Return (position);
    }
    Public void setPosition (String newPosition){
    	Position = newPosition;
    }}
    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
    <layout:html>
    	<layout:form action="myAction" styleClass="FORM">
    		<layout:text key="search.salaireMax" property="salaireMax" styleClass="FIELD"/>
    		<layout:text key="search.typeContrat" property="typeContrat" styleClass="FIELD"/>
    		<layout:submit>
    			<layout:message key="search.submit"/>
    		</layout:submit>
    		<layout:collection name="salaire" styleClass="ARRAY">
    			<layout:collectionItem title="salaire.position" property="position"/>
    			<layout:collectionItem title="salaire.salaireMin" property="SalaireMin"/>
    			<layout:collectionItem title="salaire.salaireMoy" property="salaireMoy"/>
    			<layout:collectionItem title="salaire.salaireMax" property="salaireMax"/>
                            <layout:collectionItem title="salaire.typeContrat" property="typeContrat"/>
    		</layout:collection>
    	</layout:form>
    </layout:html>
    Struts-Config

    <struts-config>
    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
    ...
    	<form-beans>
    		<form-bean name="datagridForm" type="com.foo.datagrid.DataGridForm"/>
    		...
    	</form-beans>
     
    	<action-mappings>
    		<action path="/datagrid"
    				name="datagridForm"
    				type="com.foo.datagrid.DatagridAction"
    				validate="false"
    				parameter="reqCode"
    				scope="session">
    			<forward name="jsp" path="/datagrid.jsp"/>
    		</action>
    		...
    	</action-mappings>
    	...
    </struts-config>

  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
    Pour afficher le contenu d'un Datagrid, il faut utiliser le tag layout:datagrid comme indiqué dans le tutoriel de Struts-Layout.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Par défaut
    j'ai suivi le tuto mais je pense avoir un probleme dans l'Action, je n'arrive pas a recuperer mes donnees, le probleme est dans le //get an object list, revoila mon code pour l'Action

    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
    public class DatagridAction extends DispatchAction {
     
    	public ActionForward display(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse reponse) {	
    		DatagridForm lc_form = (DatagridForm) actionForm;
     
    		// Get an object list.
     
                    List salaireList = salaire.ListSalaire();
                    salaireList = dataAccess.getMYSTOREDPROC (MYBEAN)
     
    		// Create a datagrid.
    		Datagrid lc_datagrid = Datagrid.getInstance();
     
    		// Set the bean class for new objects. 
    		lc_datagrid.setDataClass(Salaire.class);
     
    		// Set the data
    		lc_datagrid.setData(salaireList);
     
    		// Initialize the form
    		lc_form.setDatagrid(lc_datagrid);
     
    		// Forward to the jsp.
    		return actionMapping.findFoward("jsp");
    	}

  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
    As-tu remplacé le tag layout:collection par le tag layout:datagrid dans la jsp ?
    Si oui, peux-tu montrer le code ?

    Que se passe-t'il exactement ? le datagrid ne s'affiche pas ? As-tu un message d'erreur ?

  5. #5
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Par défaut
    oui j'ai bien remplacé le tag
    ma JSP est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <layout:html>
    	<layout:form action="/datagrid"  reqCode="update" styleClass="PANEL">
    	<layout:row>
    		<layout:datagrid property="datagrid" selectionAllowed="true" multipleSelectionAllowed="false" model="datagrid">
    			<layout:datagridColumn title="Position" property="Position"/>
    			<layout:datagridColumn title="Salaire minimum" property="SalaireMin"/>			
    		</layout:datagrid>
     
    		<layout:column>
    			<layout:submit reqCode="update" >Save</layout:submit>
    		</layout:column>
    	</layout:row>
    	</layout:form>
    </layout:html>
    le code erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Description of error :
    	DispatchMapping[/datagrid] does not define a handler property

  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
    C'est étonnant que tu aies ce message d'erreur parce qu'il signifie que tu n'as pas codé d'attribut parameter dans le mapping de l'Action.
    Or, quand je vois le code du struts-config.xml que tu as posté, il y a bien parameter="reqCode".
    As-tu enlevé cet attribut ?

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Si on se réfère au code fourni, tu demandes un reqCode = "update" alors que ta classe traite "display"

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 11
    Par défaut
    bonjour tous monde s'il vous plait j'ai un petit problème avec le datagrid et j'espère que vous pouvez m'aider.
    pour pouvoir déclarer un datagrid dans DatagridForm j'aurais besoins de la classe .java Datagrid qui se trouve sous le package com.foo.datagrid donc veuillez me communiquer cette classe.
    merci bien pour votre aide.

  9. #9
    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
    Pour pouvoir utiliser la classe Datagrid, il faut télécharger Struts-Layout.

  10. #10
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Si on se réfère au code fourni, tu demandes un reqCode = "update" alors que ta classe traite "display"

    A+
    Bonjour,

    Pour pouvoir traiter les deux actions «*display*» et «*update*», il faut les définir dans l'Action.

    Mais, pour afficher le contenu de datagrid la première fois il faut se diriger vers la page jsp de datagrid en précisant la valeur de reqCode : href="datagrid.do?reqCode=display"

    a+

Discussions similaires

  1. [Struts-Layout] datagrid fonctions exemple
    Par khaoula_14_05 dans le forum Struts 1
    Réponses: 8
    Dernier message: 05/12/2008, 17h12
  2. [Struts-Layout] Datagrid : Erreur Unchecked Conversion
    Par Le Pharaon dans le forum Struts 1
    Réponses: 13
    Dernier message: 21/09/2007, 09h02
  3. cacher des colonnes du struts layout datagrid
    Par imsory dans le forum Struts 1
    Réponses: 1
    Dernier message: 02/04/2007, 11h28
  4. Réponses: 2
    Dernier message: 25/02/2007, 23h56
  5. [Struts-layout]cherche exemple complet
    Par david06600 dans le forum Struts 1
    Réponses: 3
    Dernier message: 01/09/2006, 11h53

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