Re: java.lang.IllegalStateException: Must be called before the start element is closed (attribute 'id')
On 19/11/2015 11:01, l.pe...@senat.fr wrote: On 18/11/2015 17:53, l.pe...@senat.fr wrote: On 17/11/2015 13:11, l.pe...@senat.fr wrote: On 17/11/2015 01:21, Howard W. Smith, Jr. wrote: On Mon, Nov 16, 2015 at 2:59 PM, l.pe...@senat.frwrote: java.lang.IllegalStateException: Must be called before the start element is closed (attribute 'id') at org.apache.myfaces.shared.renderkit.html.HtmlResponseWriterImpl.writeAttribute(HtmlResponseWriterImpl.java:816) Searched google and found the following: http://myfaces.apache.org/shared11/myfaces-shared-core/xref/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.html#318 Maybe, you can start there. Seems as though you id="..." on one of your components may need to be fixed. Thanks for the suggestion, but it is alas not that simple. I think I found what causes the bug... I mentioned that I use : PrimeFaces 5.3.1 MyFaces 2.2.8 OpenWebBeans 1.6.2 I forgot to mention that I also use : omnifaces 1.10 I also noticed that the bug happens when : * an ajax request is triggered * the session is expired (for some reason I have yet to found, but it is another problem) The access to the ajax requested page is controlled by the container with a declaration in the webapp web.xml file. In that case OmniPartialViewContext.java#startDocument performs a redirect https://github.com/omnifaces/omnifaces/blob/master/src/main/java/org/omnifaces/context/OmniPartialViewContext.java#L275 and so, an opened document with an active element is *not* the current sate. When returning from this function, up to org.apache.myfaces.context.servlet.PartialViewContextImpl.processPartialRendering#471 there is just after, line 473 : writer.writeAttribute("id", viewRoot.getContainerClientId(_facesContext),"id"); IMHO, MyFaces is right to expect to have an opened document at this point... So I will see with BalusC if we can imagine a patch to omnifaces. The newer 1.1x version, the 1.11, is not different on this point. For the record and people who might follow this thread... I posted a question on this topic on stackoverflow : http://stackoverflow.com/questions/33786117/bug-with-omnifaces-1-10-when-omnipartialviewcontextstartdocument-performs-trans This is fixed in omnifaces 2.2-SNAPSHOT and will be available in omnifaces 1.12. https://github.com/omnifaces/omnifaces/issues/183#issuecomment-158347582 Ludovic | | AVANT D'IMPRIMER, PENSEZ A L'ENVIRONNEMENT. |
Re: java.lang.IllegalStateException: Must be called before the start element is closed (attribute 'id')
On 18/11/2015 17:53, l.pe...@senat.fr wrote: On 17/11/2015 13:11, l.pe...@senat.fr wrote: On 17/11/2015 01:21, Howard W. Smith, Jr. wrote: On Mon, Nov 16, 2015 at 2:59 PM, l.pe...@senat.frwrote: java.lang.IllegalStateException: Must be called before the start element is closed (attribute 'id') at org.apache.myfaces.shared.renderkit.html.HtmlResponseWriterImpl.writeAttribute(HtmlResponseWriterImpl.java:816) Searched google and found the following: http://myfaces.apache.org/shared11/myfaces-shared-core/xref/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.html#318 Maybe, you can start there. Seems as though you id="..." on one of your components may need to be fixed. Thanks for the suggestion, but it is alas not that simple. I think I found what causes the bug... I mentioned that I use : PrimeFaces 5.3.1 MyFaces 2.2.8 OpenWebBeans 1.6.2 I forgot to mention that I also use : omnifaces 1.10 I also noticed that the bug happens when : * an ajax request is triggered * the session is expired (for some reason I have yet to found, but it is another problem) The access to the ajax requested page is controlled by the container with a declaration in the webapp web.xml file. In that case OmniPartialViewContext.java#startDocument performs a redirect https://github.com/omnifaces/omnifaces/blob/master/src/main/java/org/omnifaces/context/OmniPartialViewContext.java#L275 and so, an opened document with an active element is *not* the current sate. When returning from this function, up to org.apache.myfaces.context.servlet.PartialViewContextImpl.processPartialRendering#471 there is just after, line 473 : writer.writeAttribute("id", viewRoot.getContainerClientId(_facesContext),"id"); IMHO, MyFaces is right to expect to have an opened document at this point... So I will see with BalusC if we can imagine a patch to omnifaces. The newer 1.1x version, the 1.11, is not different on this point. For the record and people who might follow this thread... I posted a question on this topic on stackoverflow : http://stackoverflow.com/questions/33786117/bug-with-omnifaces-1-10-when-omnipartialviewcontextstartdocument-performs-trans Regards, Ludovic | | AVANT D'IMPRIMER, PENSEZ A L'ENVIRONNEMENT. |
Re: java.lang.IllegalStateException: Must be called before the start element is closed (attribute 'id')
On 17/11/2015 13:11, l.pe...@senat.fr wrote: On 17/11/2015 01:21, Howard W. Smith, Jr. wrote: On Mon, Nov 16, 2015 at 2:59 PM, l.pe...@senat.frwrote: java.lang.IllegalStateException: Must be called before the start element is closed (attribute 'id') at org.apache.myfaces.shared.renderkit.html.HtmlResponseWriterImpl.writeAttribute(HtmlResponseWriterImpl.java:816) Searched google and found the following: http://myfaces.apache.org/shared11/myfaces-shared-core/xref/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.html#318 Maybe, you can start there. Seems as though you id="..." on one of your components may need to be fixed. Thanks for the suggestion, but it is alas not that simple. I think I found what causes the bug... I mentioned that I use : PrimeFaces 5.3.1 MyFaces 2.2.8 OpenWebBeans 1.6.2 I forgot to mention that I also use : omnifaces 1.10 I also noticed that the bug happens when : * an ajax request is triggered * the session is expired (for some reason I have yet to found, but it is another problem) The access to the ajax requested page is controlled by the container with a declaration in the webapp web.xml file. In that case OmniPartialViewContext.java#startDocument performs a redirect https://github.com/omnifaces/omnifaces/blob/master/src/main/java/org/omnifaces/context/OmniPartialViewContext.java#L275 and so, an opened document with an active element is *not* the current sate. When returning from this function, up to org.apache.myfaces.context.servlet.PartialViewContextImpl.processPartialRendering#471 there is just after, line 473 : writer.writeAttribute("id", viewRoot.getContainerClientId(_facesContext),"id"); IMHO, MyFaces is right to expect to have an opened document at this point... So I will see with BalusC if we can imagine a patch to omnifaces. The newer 1.1x version, the 1.11, is not different on this point. Thanks, Ludovic | | AVANT D'IMPRIMER, PENSEZ A L'ENVIRONNEMENT. |
Re: java.lang.IllegalStateException: Must be called before the start element is closed (attribute 'id')
On 17/11/2015 01:21, Howard W. Smith, Jr. wrote: On Mon, Nov 16, 2015 at 2:59 PM, l.pe...@senat.frwrote: java.lang.IllegalStateException: Must be called before the start element is closed (attribute 'id') at org.apache.myfaces.shared.renderkit.html.HtmlResponseWriterImpl.writeAttribute(HtmlResponseWriterImpl.java:816) Searched google and found the following: http://myfaces.apache.org/shared11/myfaces-shared-core/xref/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.html#318 Maybe, you can start there. Seems as though you id="..." on one of your components may need to be fixed. Thanks for the suggestion, but it is alas not that simple. As far as I understand... In response to an AJAX request, PartialViewContextImpl#processPartialRendering is called. Lines 468 and following is : String currentEncoding = writer.getCharacterEncoding(); writer.writePreamble("(currentEncoding == null ? "UTF-8" : currentEncoding) +"\"?>"); writer.startDocument(); writer.writeAttribute("id", viewRoot.getContainerClientId(_facesContext),"id"); The exception is triggered when the attribute is set. An element is opened (and, as far as I understand, not closed) by writer.startDocument(); If ones goes up in the stack, and take a look at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1891) https://myfaces.apache.org/core22/myfaces-impl/xref/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.html#1891 , one can read lots of comments which makes me think that things are not simple and that there might be side effects in some complex cases. I see that I forgot to indicate the versions I am using... PrimeFaces 5.3.1 MyFaces 2.2.8 OpenWebBeans 1.6.2 All this running on Tomcat 8.0.22 (in dev) or 8.0.28 (in prod). Ludovic | | AVANT D'IMPRIMER, PENSEZ A L'ENVIRONNEMENT. |
Re: java.lang.IllegalStateException: Must be called before the start element is closed (attribute 'id')
On Mon, Nov 16, 2015 at 2:59 PM, l.pe...@senat.frwrote: > java.lang.IllegalStateException: Must be called before the start element > is closed (attribute 'id') > at > org.apache.myfaces.shared.renderkit.html.HtmlResponseWriterImpl.writeAttribute(HtmlResponseWriterImpl.java:816) > Searched google and found the following: http://myfaces.apache.org/shared11/myfaces-shared-core/xref/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.html#318 Maybe, you can start there. Seems as though you id="..." on one of your components may need to be fixed.