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
urlMapping.xml
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> [...]
dispatcher-servlet.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>
GestionTechnologieController.java
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>
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
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"); } } }
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 <?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>
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.
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>
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
Partager