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

JSF Java Discussion :

portlet facelets et Back button IE


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de progamer54
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 242
    Par défaut portlet facelets et Back button IE
    Bonjour a tous

    je développe une portlet a l'aide de JSF, Facelets, Spring, iBatis etc.

    J'ai un ENORME probleme avec Internet Explorer:
    l'utilisation du bouton retour engendre une exception:

    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
     
    Nom:IllegalStateException
    Pile d'exécution:
    javax.portlet.PortletException
    caused by: java.lang.IllegalStateException
    Pile d'exécution détaillée:
    javax.portlet.PortletException
    org.apache.myfaces.portlet.MyFacesGenericPortlet.handleExceptionFromLifecycle(MyFacesGenericPortlet.java:313)
    org.apache.myfaces.portlet.MyFacesGenericPortlet.facesRender(MyFacesGenericPortlet.java:502)
    org.esupportail.commons.web.portlet.FacesPortlet.facesRender(FacesPortlet.java:153)
    org.apache.myfaces.portlet.MyFacesGenericPortlet.doView(MyFacesGenericPortlet.java:323)
    [...]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - caused by: 
    java.lang.IllegalStateException
    org.apache.catalina.connector.ResponseFacade.reset(ResponseFacade.java:308)
     org.apache.catalina.core.ApplicationHttpResponse.reset(ApplicationHttpResponse.java:119)
     javax.servlet.ServletResponseWrapper.reset(ServletResponseWrapper.java:183)
    javax.servlet.ServletResponseWrapper.reset(ServletResponseWrapper.java:183)
    org.apache.pluto.core.impl.RenderResponseImpl.reset(RenderResponseImpl.java:171)
    com.sun.facelets.FaceletViewHandler.handleRenderException(FaceletViewHandler.java:481)
    [...]
    ça fait deux jours que je suis dessus et je bouge pas d'un yota !! JE ne sais meme plus où chercher. J'ai essayer de trouver des failles dans mon web.xml, portlet.xml ou applicationContext.xml , en vein...

    Auriez vous une idée. J'ia l'impression qu'il y a un probleme avec l'état de la portlet au moment du retour (IllegalStateException) mais pourquoi???
    et surtout pourquoi avec IE et pas Firefox.
    Sous firefox tout marche nikel. je reviens sur la page précédente de ma portlet et je peux continuer a naviguer.

    A noter que lors du 'retour arriere' le début de la page s'affiche correctement.
    l'erreur survient au moment où (dans ma page xhml) je fais référence à un bean.

    mais c'est quand même étrange qu'il y ait une requete serveur (sinon il afficherait juste le code html précédent...) lors d'un clic sur le bouton 'retour' non? normalement ça réaffiche juste le html non?

    Je ne sais pas si cela vient de la portlet a proprement parler, de JSF ou de Facelets.
    Bref je suis perdu. SI vous avez une idée...Merci d'avance.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Salut, faudrait avoir l'erreur mère pour savoir ou viens ton probleme. Le stacktrace que tu donne c'est en gros une exception B qui te dit qu'un problème est survenu lorsque l'on a tenté d'afficher à l'utilisateur une exception A qui s'est produite dans JSF, sauf que là dans ton stack y a pas l'exception A

    Regarde si t'as pas un fichier tomcat.log (si tu utilise tomcat) qui contient cette exception. Je sais que çà a tendance à etre très frustrant quand un erreur se produit dans le rendering et que qqn essaie de faire un rest de la reponse pour afficher l'erreur, ce qui déclenche une autre erreur :s

  3. #3
    Membre éclairé Avatar de progamer54
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 242
    Par défaut
    ok je vais essayé de te trouver ça.

    En attendant je viens de trouver la différence entre IE et Firefox.
    quand je fais un retour arriere dans firefox, l'url précédente est reprise mais c'est la page du cache qui est affichée. Alors que dans IE, il semble réexécuter l'url précédente ce qui conduit a l'erreur.
    en effet, si je copie / colle l'url précédente dans firefox le bug se produit aussi.
    Les urls sont du type:
    http://localhost:8080/uPortal/tag.23...tions.xhtml#52

    Si manuellement je passe uP_portlet_action de false à true. ça fonctionne. l'url renvoie bien a la page précédente et tout fontionne.
    je sais pas si ça parle à quelqu'un cette histoire d'url de retour avec uP_portlet_action à 'false' utilisée par IE?

  4. #4
    Membre éclairé Avatar de progamer54
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 242
    Par défaut
    voici deja le reste de la trace avec ce qui se produit avant 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
     
     - - - - caused by: 
     java.lang.IllegalStateException
     org.apache.catalina.connector.ResponseFacade.reset(ResponseFacade.java:308)
     org.apache.catalina.core.ApplicationHttpResponse.reset(ApplicationHttpResponse.java:119)
     javax.servlet.ServletResponseWrapper.reset(ServletResponseWrapper.java:183)
     javax.servlet.ServletResponseWrapper.reset(ServletResponseWrapper.java:183)
     org.apache.pluto.core.impl.RenderResponseImpl.reset(RenderResponseImpl.java:171)
     com.sun.facelets.FaceletViewHandler.handleRenderException(FaceletViewHandler.java:481)
     com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:463)
     org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
     org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
     org.apache.myfaces.portlet.MyFacesGenericPortlet.facesRender(MyFacesGenericPortlet.java:498)
     org.esupportail.commons.web.portlet.FacesPortlet.facesRender(FacesPortlet.java:153)
     org.apache.myfaces.portlet.MyFacesGenericPortlet.doView(MyFacesGenericPortlet.java:323)
     javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:250)
     javax.portlet.GenericPortlet.render(GenericPortlet.java:178)
     org.apache.pluto.core.PortletServlet.dispatch(PortletServlet.java:218)
     org.apache.pluto.core.PortletServlet.doGet(PortletServlet.java:158)
     javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
     javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     org.apache.pluto.core.PortletServlet.service(PortletServlet.java:153)
     org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
     org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
     org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691)
     org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:594)
     org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:505)
     org.apache.pluto.invoker.impl.PortletInvokerImpl.invoke(PortletInvokerImpl.java:120)
     org.apache.pluto.invoker.impl.PortletInvokerImpl.render(PortletInvokerImpl.java:73)
     org.apache.pluto.PortletContainerImpl.renderPortlet(PortletContainerImpl.java:119)
     org.jasig.portal.channels.portlet.CPortletAdapter.getMarkup(CPortletAdapter.java:582)
     org.jasig.portal.channels.portlet.CPortletAdapter.renderCharacters(CPortletAdapter.java:511)
     org.jasig.portal.ChannelRenderer$Worker.execute(ChannelRenderer.java:564)
     org.jasig.portal.utils.threading.BaseTask.run(BaseTask.java:27)
     edu.emory.mathcs.backport.java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:431)
     edu.emory.mathcs.backport.java.util.concurrent.FutureTask.run(FutureTask.java:166)
     edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:643)
     edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:668)
     java.lang.Thread.run(Unknown Source)
    a priori l'erreur survient là , non? :
    com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:463)

  5. #5
    Membre éclairé Avatar de progamer54
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 242
    Par défaut
    ce qui est surprenant c'est que j'ai mis un autre view-handler.
    FaceletPortletViewHandler a la place de FaceletViewHandler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <faces-config>
     
    	<application>
    		<variable-resolver>
    			org.springframework.web.jsf.DelegatingVariableResolver
    		</variable-resolver>
    <view-handler>com.sun.facelets.FaceletPortletViewHandler</view-handler>
    	</application>
    et que l'erreur vient de FaceletViewHandler
    ceci dit, comme FaceletPortletViewHandler extends FaceletViewHandler, c'est possible...

    A noter que FaceletPortletViewHandler est une classe que j'ai obtenue sur internet et que j'ai ajoutée dans mon projet....
    http://www.docjar.com/docs/api/com/s...ewHandler.html

  6. #6
    Membre éclairé Avatar de progamer54
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 242
    Par défaut
    reBonjour

    ...probleme résolu...ouf
    je suis juste passé a la nouvelle version de facelets (1.1.14)
    et ça fonctionne.
    Pour info, j'ai aussi rajouté un listener (via un exemple de portlet donné dans le package de facelets1.1.14):
    <listener>
    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
    </listener>

    Il se pourrait d'ailleurs bien que ce listener résolve mes problèmes d'initialisation à l'allocation de la portlet que j'ai aussi depuis toujours...je testerai ...
    voila, voila.
    Probleme enfin résolu

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par progamer54 Voir le message

    a priori l'erreur survient là , non? :
    com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:463)
    Non, là il traite une erreur envoyée, probablement par un de tes bean ou un de tes composant, et dans le traitement de l'erreur (handleRenderException) il demande à l'httpresponse de faire un reset ("on efface tout") histoire de pouvoir afficher une page d'erreur. Et là tomcat déclenche une deuxième erreur disant en gros "pas possible, j'ai déjà fait du rendu" -> IllegalStateException en tentant un reset de la réponse... Le problème, c'est que l'exception d'origine est probablement perdu au fin fond du grand void

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

Discussions similaires

  1. Texte du Back Button dans la barre de navigation
    Par alexj78 dans le forum Développement iOS
    Réponses: 2
    Dernier message: 15/01/2014, 14h59
  2. Back Button et suppression
    Par bojbop dans le forum Android
    Réponses: 5
    Dernier message: 10/04/2013, 17h07
  3. filter non utilisé avec le back button du browser
    Par chris_013 dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 02/09/2009, 16h40
  4. Réponses: 0
    Dernier message: 28/07/2009, 09h29
  5. [Liferay] Portlet multi-pages avec Icefaces + Seam + Facelets
    Par TomX22 dans le forum Portails
    Réponses: 0
    Dernier message: 17/07/2008, 17h40

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