Problème de page blanche sur navigation avec html:link
Bonjour,
Je travaille sur une grosse application développée en struts/java.
J'ai un menu à gauche qui permet de faire varier le frame central.
Extrait de la jsp pour le menu de gauche :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <%@ page language="java"%>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<tiles:insert template="/jsp/template/menu.jsp">
<tiles:put name="content" type="string">
<div id="masterdiv">
<div class="menutitle" onclick="SwitchMenu('sub1')">Données individuelles</div>
<span class="navForm" id="sub1">
<html:link forward="/sc0601DisplayAction" target="contentFrame">Personnelles</html:link><br>
<html:link forward="/sc0602DisplayAction" target="contentFrame">Carrière</html:link><br>
</span>
.... |
Les forwards sur DisplayAction font ensuite référence à une jsp via struts-config.xml. Par exemple :
Code:
1 2 3 4
| <action path="/sc1200DisplayAction" type="com.ibm.b2e.usecase.uc12doc.sc12DocDem.Sc1200DisplayAction">
<forward name="success" path="/jsp/window/contentFrame/sc1200_XDocDem.jsp">
</forward>
</action> |
Tout cela constitue une partie qui a toujours fonctionné et fonctionne actuellement sur le serveur web de développement Eclipse ou un tomcat.
Mais sur un serveur web 2 de mêmes caractéristiques à priori (tomcat 5.5.12) le problème est que quelle que soit la page que laquelle je clique, j'obtiens à tort une page blanche sur le frame central.
Auriez-vous des idées pour expliquer pourquoi on peut obtenir une page blanche au lieu d'une jsp?
Je ne vois pas pourquoi cela marche bien sur le serveur web 1 de la même machine, alors que la techno de déploiement est à partir du meme fichier .war est identique et a été faite de la même façon.
Cela ne dépend pas du poste en tous cas (idem sur autres postes), et on a même pas de 'cannot find page', donc qu'est ce qui peut faire que l'on puisse obtenir une page blanche sans message d'erreur d'aide?
Comment breakpointer à postériori
Comment ferais-tu pour pister le forward justement?
car dans l'environnement de Eclipse, le problème est non reproduit. En plus même si j'avais Eclipse, je vois pas comment je pourrais mettre un breakpoint au niveau de struts/forward.
Peut-être que ce que le peux faire, c'est mettre du java (system.output) dans la jsp cible non? Tu vois mieux?
Résultat display dans la jsp
Display dans la jsp forwardée :
Code:
<% System.out.println("entree dans sc1200_XDocDem.jsp"); %>
Sur le serveur web 1 (là ou ça marche): display ok
Sur le serveur web 2 (là ou ça ne marche pas): pas de display
Donc j'aimerais bien en effet voir ce qui se passe avant au niveau de struts.
Information sur les modes page jsp
Je voudrais préciser que dans le frame qui devient blanc, le code jsp correspondant contient les clauses suivantes :
Code:
1 2 3 4 5
| <%@ page language="java" buffer="4096kb" autoFlush="false" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/b2e-html.tld" prefix="b2ehtml" %> |
Même si cela marche sur les autres serveurs web, est-ce ce sont les bons modes au niveau du autoflush ou buffer : est-ce que quelque peut m'expliquer clairement à quoi servent ces modes?
Problème résolu : méthode hasAccess
Citation:
Envoyé par assistibm
Je voudrais préciser que dans le frame qui devient blanc, le code jsp correspondant contient les clauses suivantes :
Code:
1 2 3 4 5
| <%@ page language="java" buffer="4096kb" autoFlush="false" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/b2e-html.tld" prefix="b2ehtml" %> |
Même si cela marche sur les autres serveurs web, est-ce ce sont les bons modes au niveau du autoflush ou buffer : est-ce que quelque peut m'expliquer clairement à quoi servent ces modes?
J'ai trouvé la solution au problème : quand on utilise struts et sa méthode de confidentialité hasAccess(), pour peu qu'il y ait un problème de positionnement de cette méthode, struts renvoie par défaut une page à blanc. Or là dans mon application pour le user connecté son rôle n'était pas bien attribué donc j'ai rajouté dans struts-config.xml un forward error avec une page web indiquant : 'Vous n'avez pas le droit d'utiliser cette page'.