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 :

[SpringMVC] problème Spring et displaytag


Sujet :

Spring Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 56
    Par défaut [SpringMVC] problème Spring et displaytag
    Bonjour à tous.

    Je suis amener a débuger un programme qui n'emploit pas très bien spring (m'étant initié a spring il y a tout juste 15 jour, je suis un vrai débutant)

    Le programme originel utilisait des Iterator et du code java directement dans les pages JSP pour afficher les données récupérés par le controleur sous forme de tableau. J'aimerai remplacer cette structure simplement en mettant des displaytag.

    Seulement voila j'ai un souci quand je clique sur un bouton de tri du displaytag, il me recharge la page sans passer par le controller. (merci les breakpoint et le debugger), du coup je perd toute les infos et mon tableau displaytag se vide.

    voici le code me permettant d'arriver à ma page posant problème :

    menu_principal.jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [...]
    <td class="td_outil"><a class="a_s4" href="/pop/vues/rp/gestion_technologie.htm">Gestion des technologies </a></td>
    [...]
    urlMapping.xml
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
     "http://www.springframework.org/dtd/spring-beans.dtd">
    
    <beans>
    
    <!-- URL Mapping definition -->
    	<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    		<property name="mappings">
    			<props>
    
    [...]
    <prop key="vues/rp/gestion_technologie.htm">gestionTechnologieController</prop>
    [...]
    			</props>
    		</property>
    	</bean>
    	
    </beans>
    dispatcher-servlet.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
      "http://www.springframework.org/dtd/spring-beans.dtd">
    
    <beans>
    [...]
    	<bean id="gestionTechnologieController" class="com.ttr.pop.web.controller.Technologie.GestionTechnologieController"/>
    [...]
    </beans>
    GestionTechnologieController.java
    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
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
     
    import org.springframework.context.ApplicationContext;
    import org.springframework.web.context.support.WebApplicationContextUtils;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.AbstractController;
     
    import com.sopra.pop.datasource.organisation.bo.Projet;
    import com.sopra.pop.metier.parametrage.MetierTechnologie;
     
    public class GestionTechnologieController extends AbstractController {
     
    	protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) throws Exception {
    		HttpSession session = req.getSession(true);
    		ServletContext sc = session.getServletContext();
    		ApplicationContext appcx = WebApplicationContextUtils.getWebApplicationContext(sc);
    		try{
    			Projet prj = (Projet)session.getAttribute("projet_session");
    			MetierTechnologie mt = new MetierTechnologie(appcx);
    			req.setAttribute("technologies",mt.getListeTechnologie(prj.getCode()));
    			return new ModelAndView("gestionTechnologie");	
    		}catch(Exception e){
    			req.setAttribute("except", e.getMessage());
    			req.setAttribute("stackTrace", e.getStackTrace());
    			return new ModelAndView("erreur");	
    		}	
    	}
    }
    springweb-views.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
     "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
    [...]
    	<bean id="gestionTechnologie" class="org.springframework.web.servlet.view.InternalResourceView" lazy-init="default" autowire="default" dependency-check="default">
     		<property name="url">
    		<value>/vues/rp/gestion_technologie.jsp</value> 
    		</property>
    	</bean>
    [...]
    </beans>
    gestion_technologie.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
    <%@ include file="../content/common/import_jsp.jsp" %>
    
    
    <%
    	String date = (String) session.getAttribute("date");
    	String msg = (String) request.getAttribute("msg");
    %>
    
    <html>
    	<head>
    		<link href="../style/common/common_style.css" rel="stylesheet" type="text/css" />
    		<link href="../style/common/displaytag.css" rel="stylesheet" type="text/css" />
    		<link href="../style/spec/gestion/types/gestion_type_style.css" rel="stylesheet" type="text/css" />
    		<link href="../style/spec/gestion/gestion_common_style.css" rel="stylesheet" type="text/css"/>
    		<script type="text/javascript" src="../lib/common/selectiontable/script.js"></script>
    	</head>
    	<body onload="">
    [...]
    						<display:table name="technologies" defaultsort="1" defaultorder="ascending" style="width:100%;">
    							<display:column property="id" title="ID" sortable="true" headerClass="sortable"/>
    							<display:column property="code" title="Code"/>
    							<display:column property="libelle" title="Libelle" sortable="true"/>
    							<display:column property="projet.libelle" title="Affilié au projet"/>
    						</display:table>
    [...]
    	</body>
    </html>
    Je pense vraiment que le problème viens du fait que le bouton de tri du displaytag recharge la page sans que celle ci provienne du controller.

    Un ami ma conseillé de passer par "urlMap.properties" pour les liaison pages-controller plutot que "urlmapping.xml" , mais comme je l'ai précisé au début, je suis un pur débutant en spring...

    help

  2. #2
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonjour,

    Peux tu montrer comment tu as déclaré les attributs dans <display:table>.
    Sinon, quel est le scope utilisé pour la transmission de ta liste à afficher dans le displaytag?

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 56
    Par défaut
    Citation Envoyé par zorm Voir le message
    Bonjour,

    Peux tu montrer comment tu as déclaré les attributs dans <display:table>.
    Sinon, quel est le scope utilisé pour la transmission de ta liste à afficher dans le displaytag?
    j'été justement en train de mettre a jour mon post initial j'avasi oublié la la page jsp en question =)

    lorsque la page est chargé pour la première fois (cad quand le controller renvoi bien la vue) le tableau correctement avec tout ce qu'il faut, c'est vraiment quand je clique sur un bouton de tri que le tableau se vide en rechargant la page sans passer par le controller.

  4. #4
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Essayes la balise suivante dans ta jsp.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <display:table name="technologies" defaultsort="1" defaultorder="ascending" style="width:100%;" id="technologiesTable" sort="external" requestURI="" >
    L'attribut requestURI va permettre de préciser une eventuelle URI à appeler dans le cas d'un tri, export... Si le problème persiste avec requestURI="", essayes d'y renseigner l'URI vers ton controlleur, on sait jamais

  5. #5
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 56
    Par défaut
    Citation Envoyé par zorm Voir le message
    Essayes la balise suivante dans ta jsp.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <display:table name="technologies" defaultsort="1" defaultorder="ascending" style="width:100%;" id="technologiesTable" sort="external" requestURI="" >
    L'attribut requestURI va permettre de préciser une eventuelle URI à appeler dans le cas d'un tri, export... Si le problème persiste avec requestURI="", essayes d'y renseigner l'URI vers ton controlleur, on sait jamais
    avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id="technologiesTable" sort="external" requestURI=""
    ma page ne se vide plus (deja ca de réglé), parcontre les tri ne fonctionnent pas du tout.

    EDIT : : si je retire ' sort="external" ' ca marche nickel ! encore merci pour ta réponse ^^

  6. #6
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Il me semble que pour que ca marche avec le sort=external, il faut rajouter des éléments de configuration dans le displaytag.properties du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    pagination.sort.param=sort
    pagination.sortdirection.param=dir
    pagination.pagenumber.param=page
    pagination.searchid.param=searchid
    pagination.sort.asc.value=asc
    pagination.sort.desc.value=desc
    pagination.sort.skippagenumber=true
    Mais tant mieux si ca marche maintenant

  7. #7
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 56
    Par défaut
    et une dernière chose :

    je souhaite mettre des liens genre "modifier" "supprimer" pour cela j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <display:table name="technologies" defaultsort="1" defaultorder="ascending" style="width:100%;" id="technologiesTable"  requestURI="" >
         <display:column property="code" title="Code" sortable="true" headerClass="sortable"/>
         <display:column property="libelle" title="Libelle" sortable="true"/>
         <display:column title="" href="/pop/vues/rp/modif_technologie.htm" paramId="id" paramProperty="id"><center>modifier</display:column>
         <display:column title="" href="/pop/vues/rp/suppr_technologie.htm" paramId="id" paramProperty="id"><center>supprimer</display:column>
    </display:table>
    seulement voila j'ai une contrainte qui fait que pour certaines lignes je ne dois pas afficher un lien "supprimer". Pour cela j'ai une methode qui me retourne (en fontion de l'ID de la technologie) si je peux la supprimer ou non.

    Comment implementer un test java au sein d'un displaytag ?

  8. #8
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Je ne sais pas si displaytag autorise l'interprétation de scriptlet dans le corps des balises display:column. Si les scriptlets ne marchent pas, je pense qu'il va falloir passer par un decorator.
    J'avoue ne jamais avoir essayé par contre

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

Discussions similaires

  1. problème compilation jsp displaytag
    Par kokumbo dans le forum Struts 1
    Réponses: 0
    Dernier message: 28/02/2009, 12h35
  2. [Web Services] Problème Spring WS/Changement Eclipse
    Par tontonmemel dans le forum Spring
    Réponses: 0
    Dernier message: 05/02/2009, 12h14
  3. [débutant] problème spring et eclipse
    Par david42 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 10/10/2008, 13h34
  4. [Data] Problème spring DAO JDBC
    Par Ethylene dans le forum Spring
    Réponses: 1
    Dernier message: 07/03/2008, 20h34
  5. [Spring MVC] DisplayTag
    Par flobR dans le forum Spring Web
    Réponses: 1
    Dernier message: 30/10/2007, 11h49

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