FYI solving it is as easy as https://github.com/apache/tomee/blob/a5088393dd32f167ab0869e955db194aa914dc67/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEWorkaroundFacesServlet.java Le 26 mars 2016 09:13, "Dan Østerberg" <d...@ren.no> a écrit :
> Hi, > > I'd second that this is a bug. I don't know about the spec, but it > certainly makes sense to support nested contexts and thus a push / pop like > create / release. We stumbled upon this issue quite some time ago, when > dispatching to an error page from and exception handler. And we solved it > with an own FacesContext implementation that resets the previous context if > the current context during release is our own. > > Cheers, > Dan Østerberg > > -----Opprinnelig melding----- > Fra: Leonardo Uribe [mailto:lu4...@gmail.com] > Sendt: 26. mars 2016 03:07 > Til: MyFaces Discussion <users@myfaces.apache.org> > Emne: Re: bug in FacesServlet? > > Hi > > It could be possible, I do not have all the details, but I have the > impression that happens on jsp, or at least I have seen that before. > MyFaces does what the spec says, but this part could not be well defined. > > It is clear the release should happen after the end of the lifecycle, but > since the rendering step is delegated to jsp in this case, after that point > there is no control, so the code just release in that point. The problem > here is we don't know what happens for different jsp containers. In my > understanding not every jsp implementation works the same, but as I said, I > have not entered into details. > > regards, > > Leonardo Uribe > > 2016-03-25 13:15 GMT-05:00 Romain Manni-Bucau <rmannibu...@gmail.com>: > > > Hi guys, > > > > org.apache.myfaces.context.servlet.FacesContextImpl#release does the > > release but javax.faces.webapp.FacesServlet#service doesn't handle > > context push/pop so if a JSF request does a JSF include (and retrigger > > the servlet) it will likely reset too early the context. > > > > Here a diagram hoping it helps: > > > > -> request > > -> FacesServlet > > -> setFacesContext > > -> FacesServlet > > -> anything relaunching a JSF "request" > > org.apache.myfaces.view.jsp.JspViewDeclarationLanguage#buildView does > > a forward for instance) > > -> setFacesContext > > -> setFacesContext > > -> releaseFacesContext > > -> end of lifecycle // oops faces context is null > > -> releaseFacesContext > > > > Romain Manni-Bucau > > @rmannibucau | Blog | Github | LinkedIn | Tomitriber > > >