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 d'utilisation du Datagrid


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 98
    Points : 54
    Points
    54
    Par défaut [Struts-Layout] Problème d'utilisation du Datagrid
    J'ai un problème du même genre que dans cette discussion et même apres avoir lu toutes vos suggestions, je n'ai pas pu le régler.
    Ce n'est qu'un simple test de Struts-Layout que je fais.
    J'essaie d'appeler une action qui initialise le datagrid et après affiche la page jsp et ça me fait le même problème.
    Si vous trouvez pourquoi, merci de m'éclairer.
    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
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response) {
    		DatagridTestForm datagridTestForm = (DatagridTestForm) form;// 
    		UtilisateurDAO dao=new UtilisateurDAO();
    		dao.getSession();
    		List list=dao.findAll();
    		dao.getSession().close();
    		Datagrid dtg=Datagrid.getInstance();
    		dtg.setDataClass(com.isifin.hiber.Utilisateur.class);
    		dtg.setData(list);
    		datagridTestForm.setDatagrid(dtg);
    		return mapping.findForward("afficherResultat");
    	}
    }
    le Form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class DatagridTestForm extends ActionForm {
     
    private Datagrid datagrid;
    	public Datagrid getDatagrid() {
    	return datagrid;
    }
     
    public void setDatagrid(Datagrid datagrid) {
    	this.datagrid = datagrid;
    }
    la 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
    <%@ page language="java" pageEncoding="ISO-8859-1"%>
     
    <%@ taglib uri="/WEB-INF/struts-layout.tld" prefix="layout" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
     
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html:html lang="true">
      <head>
        <html:base />
     
        <title>result.jsp</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">
    	-->
      <layout:skin includeScript="true"/>
      </head>
     
      <body>
        <html:form action="/rien" method="post">
          <layout:datagrid property="datagrid" selectionAllowed="true" multipleSelectionAllowed="false" model="datagrid">
    			<layout:datagridColumn title="Login" property="loginUser"/>
    			<layout:datagridColumn title="mot de pass" property="mdpUser"/>			
    			<layout:datagridColumn title="Employé num:" property="idEmp"/>		
    		</layout:datagrid>
    		<input type="submit" name="submit">
        </html:form>
      </body>
    </html:html>
    Je vous remercie pour toute suggestion.

  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
    Tout d'abord, remplace le tag html:form par un tag layout:form.
    Ensuite, dans le struts-config.xml, dans le mapping de l'Action de path /rien (drôle de nom!), as-tu bien référencé le form-bean de type DatagridTestForm ?
    Et enfin, as-tu un message d'erreur ?
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 98
    Points : 54
    Points
    54
    Par défaut enfin!!!
    merci pr votre reponse,l erreur ke javai m indiquai ke le datagrid était null,javai commencer a travaillé en suivant le tutorial du site de struts layout et dans leurs page ki explik comment initialiser le datagrid dans l action, il y a aucune instruction qui indik kil fau enregistrer le form bean dans la requete apres lui aavoir ajouter le datagrid, donc g simplement ajouter l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.setAttribute("datagridTestForm",datagridTestForm);
    et sa marche.
    merci encor.

  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
    Il n'est pas utile de mettre le form-bean dans le scope request via un setAttribute car il est automatiquement mis dans le scope précisé dans le mapping de l'Action dans le struts-config.xml.

    Donc, pour moi, c'est une autre modification que tu as effectué qui a corrigé le problème.
    Modératrice Java - Struts, Servlets/JSP, ...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 98
    Points : 54
    Points
    54
    Par défaut ??? probleme perciste toujour?
    j ai essayer de supprimer la portion de code que j ai ajouté mai il me refai l erreur précédente
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fr.improve.struts.taglib.layout.collection.CollectionsIterator.<init>(CollectionsIterator.java:35)
    et si je remet le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.setAttribute("datagridTestForm",datagridTestForm);
    sa marche???

  6. #6
    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
    Peux-tu montrer la trace complète de l'erreur et le mapping des deux Actions, celle qui initialise le formulaire et celle qui s'exécute au submit du formulaire (soit celle de path /rien) du struts-config.xml ?

    D'ailleurs, normalement, cela devrait être une Action qui hérite de DispatchAction et donc, il devrait y avoir une seule et même Action.

    Et sinon, as-tu bien remplacé le tag html:form par un tag layout:form ?
    Modératrice Java - Struts, Servlets/JSP, ...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 98
    Points : 54
    Points
    54
    Par défaut
    pour mon exemple j utilise une action qui initialise le datagrid et qui affiche une jsp qui contient le datagrid, la jsp affiche le datagrid dans jun formulaire et renvoi le formulaire vers une action "rien" qui ne fait rien , puisque moi je voilai seulement essayer de voir laffichage du datagrid.
    voila laction qui initialise le datagrid et qui me renvoi vers la jsp:
    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
     
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response) {
    		DatagridTestForm datagridTestForm = (DatagridTestForm) form;// 
    		UtilisateurDAO dao=new UtilisateurDAO();
    		dao.getSession();
    		List list=dao.findAll();
    		request.setAttribute("list", list);
    		dao.getSession().close();
    		Datagrid dtg=Datagrid.getInstance();
    		dtg.setDataClass(Utilisateur.class);
    		dtg.setData(list);
    		datagridTestForm.setDatagrid(dtg);
    		//request.setAttribute("datagridTestForm",datagridTestForm);
    		return mapping.findForward("afficherResultat");

    et voila ma jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      <layout:form action="/rien" styleClass="FORM" key="batata">
          <layout:datagrid property="datagrid" selectionAllowed="TRUE" multipleSelectionAllowed="false" model="datagrid" styleClass="FORM">
    			<layout:datagridColumn title="Login" property="loginUser"/>
    			<layout:datagridColumn title="mot de pass" property="mdpUser"/>			
    			<layout:datagridColumn title="Employé num:" property="idEmp"/>			
    		</layout:datagrid>
    		<layout:button onclick="StrutsLayout.setDatagridLineState('datagrid', 'removed')">Remove</layout:button>
    		<layout:button onclick="StrutsLayout.addDatagridLine('datagrid')">Add</layout:button>
    		<layout:submit value="valder" />
     </layout:form>
    laction rien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response) {
    		DatagridTestForm datagridTestForm = (DatagridTestForm) form;// 
    		return null;
    la trace de l erreur:
    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
     
    exception 
     
    org.apache.jasper.JasperException
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
    	org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
     
     
    cause mère 
     
    java.lang.NullPointerException
    	fr.improve.struts.taglib.layout.collection.CollectionsIterator.<init>(CollectionsIterator.java:35)
    	fr.improve.struts.taglib.layout.collection.BaseCollectionTag.doStartLayoutTag(BaseCollectionTag.java:929)
    	fr.improve.struts.taglib.layout.datagrid.DatagridTag.doStartLayoutTag(DatagridTag.java:57)
    	fr.improve.struts.taglib.layout.BodyLayoutTagSupport.doStartTag(BodyLayoutTagSupport.java:36)
    	org.apache.jsp.result_jsp._jspx_meth_layout_datagrid_0(result_jsp.java:244)
    	org.apache.jsp.result_jsp._jspx_meth_layout_form_0(result_jsp.java:203)
    	org.apache.jsp.result_jsp._jspx_meth_html_html_0(result_jsp.java:141)
    	org.apache.jsp.result_jsp._jspService(result_jsp.java:88)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
    	org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    merci

  8. #8
    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
    Peux-tu aussi montrer le mapping des deux Actions dans le struts-config.xml ?

    Ce que je te disais dans mon précédent message, c'est qu'au lieu de définir deux Actions, une qui initialise le formulaire et une qui s'exécute à la soumission du formulaire, il est plus simple d'utiliser une Action qui hérite de DispatchAction car elle permet de réaliser plusieurs actions sur le même formulaire.

    C'est d'ailleurs ce qui est indiqué dans le tutoriel du datagrid sur le site de Struts-Layout ici.
    Modératrice Java - Struts, Servlets/JSP, ...

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 98
    Points : 54
    Points
    54
    Par défaut
    oui vous avez raison, javai pas considéré la solution dispatch action.
    et pour le mapping de la class:
    voici tou le fichier strts config:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <action
          attribute="datagridTestForm"
          name="datagridTestForm"
          path="/afficherResult"
          type="com.isifin.struts.action.AfficherResultAction"
          validate="false">
     
          <forward name="afficherResultat" path="/result.jsp" />
        </action>

  10. #10
    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
    Et le mapping de l'autre Action ?
    Modératrice Java - Struts, Servlets/JSP, ...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 98
    Points : 54
    Points
    54
    Par défaut
    lautre action ne fait vraiment rien, puisque j en ai pas besoin.
    voici son mapping
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <action
          attribute="datagridTestForm"
          name="datagridTestForm"
          path="/rien"
          scope="request"
          type="com.isifin.struts.action.RienAction" />

  12. #12
    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
    Même si elle ne fait rien, elle est quand même utile étant donné que le tag layout:datagrid est obligatoirement dans un tag layout:form et que c'est dans ce mapping que tu indiques le form-bean.

    Peux-tu faire un test avec scope="session" dans le mapping de ton Action de path /rien ?
    Modératrice Java - Struts, Servlets/JSP, ...

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 98
    Points : 54
    Points
    54
    Par défaut
    ok sa marche sans remettre le bean dans la requete.
    merci

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

Discussions similaires

  1. [Struts-Layout] Problème d'affichage d'un Datagrid
    Par Younes_001 dans le forum Struts 1
    Réponses: 7
    Dernier message: 24/05/2009, 21h00
  2. [Struts-Layout] problème avec dynMenu
    Par vny dans le forum Struts 1
    Réponses: 3
    Dernier message: 26/11/2008, 14h01
  3. [Struts-Layout] Problème avec Datagrid
    Par Le Pharaon dans le forum Struts 1
    Réponses: 15
    Dernier message: 25/07/2007, 14h13
  4. [Struts-Layout] problème avec layout:datagrid
    Par khayri dans le forum Struts 1
    Réponses: 2
    Dernier message: 20/04/2007, 09h31
  5. Réponses: 2
    Dernier message: 14/12/2006, 15h43

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