Bonjour,
j'utilise un treeview et je souhaiterai qu'à chaque arrivée sur la page il soit plié. J'ai essayé d'utiliser expandedLevelsAtFirst="0" mais ça marche pas.
Merci par avance.
Version imprimable
Bonjour,
j'utilise un treeview et je souhaiterai qu'à chaque arrivée sur la page il soit plié. J'ai essayé d'utiliser expandedLevelsAtFirst="0" mais ça marche pas.
Merci par avance.
Re,
j'ai un peu avancé dans ma recherche apparemment il faut inclure
dans le struts-config.xml mais après avoir fait ça j'ai une erreurCode:
1
2
3 <controller processorClass="fr.improve.struts.taglib.layout.workflow.LayoutRequestProcessor" contentType="text/html;charset=UTF-8" locale="true"/>
Faut -il que j'ai obligatoirement un fichier Tiles? Comment ça marche.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Error 500--Internal Server Error java.lang.ClassCastException at org.apache.struts.tiles.TilesRequestProcessor.initDefinitionsMapping(TilesRequestProcessor.java:84) at org.apache.struts.tiles.TilesRequestProcessor.init(TilesRequestProcessor.java:75) at org.apache.struts.action.ActionServlet.getRequestProcessor(ActionServlet.java:602) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077) at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) at fr.gouv.sante.storex.filter.AuthentificationFilter.doFilter(AuthentificationFilter.java:99) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:7053) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3902) at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
Merci beaucoup, comme d'hab je patauge dans la semoule...
Normalement, la déclaration du controller LayoutRequestProcessor dans le struts-config.xml n'est utile que si tu utilises les Tiles.
En fait, tu as raison.
Sur le site de Struts-Layout, il est écrit ceci :
Citation:
How can I open or close a node programatically ?
If you create your tree in a Struts action, using the MenuComponent class, you can use the setOpen(boolean) method to open or close a node. This requires the fr.improve.struts.taglib.layout.workflow.LayoutRequestProcessor to be configured in the struts-config.xml file.
D'accord, c'est effectivement ce que j'ai vu mais du coup je comprends pas ce qu'il faut que je fasse.
Essaie de déclarer le plugin des Tiles dans le struts-config.xml :
et ensuite, crée un fichier tiles-def.xml avec seulement ceci dedans :Code:
1
2
3
4
5
6
7 <plug-in className="org.apache.struts.tiles.TilesPlugin"> <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" /> <set-property property="definitions-debug" value="0" /> <set-property property="definitions-parser-details" value="0" /> <set-property property="definitions-parser-validate" value="false" /> <set-property property="moduleAware" value="true"/> </plug-in>
Code:
1
2
3
4
5
6
7
8 <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/tiles-config_1_2.dtd"> <tiles-definitions> </tiles-definitions>
J'ai essayé, voilà ce que j'ai:
MerciCitation:
java.lang.NullPointerException
at org.apache.struts.tiles.definition.ComponentDefinitionsFactoryWrapper.getDefinition(ComponentDefinitionsFactoryWrapper.java:84)
at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:152)
at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:302)
at fr.improve.struts.taglib.layout.workflow.LayoutRequestProcessor.processForwardConfig(LayoutRequestProcessor.java:39)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at fr.gouv.sante.storex.filter.AuthentificationFilter.doFilter(AuthentificationFilter.java:123)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:7053)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3902)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
Il cherche une balise definition dans le tiles-def.xml mais comme tu n'en as pas à définir, je ne vois pas comment tu peux t'en sortir.
A moins d'en mettre une "bidon" mais je trouve ça franchement lourd.
C'est bizarre qu'il n'y ait pas moyen de définir le controller seul.:?
Peux-tu faire un test en référençant la dtd 1.1 au lieu de la 1.2 :
Code:
1
2
3
4
5
6
7
8 <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd"> <tiles-definitions> </tiles-definitions>
Ton conseil était bon, je n'ai plus eu d'erreur (j'ai aussi ajouté une definition bidon) au lancement de l'appli.
Mais je n'ai pas réussi à fermer mon arbre pour autant!!!
Donc la solution que j'ai trouvé et de supprimer le cookie qui est sauvegardé par IE dans mon menu.jsp qui se trouve dans chaque page. Si ça intéresse quelqu'un, il suffit de trouver le nom du cookie et de lui donner une date d'expiration passé:
J'ai rajouté une formule qui permet de changer de date de 1976 à 2000.Code:
1
2<script> document.cookie = "treeView=; expires=Fri, 21 Dec <%=Math.round(Math.random()*24+1976)%> 04:31:24 GMT;";</script>
Merci pour votre aide.