[ http://issues.apache.org/jira/browse/MYFACES-348?page=comments#action_12319362 ]
Dan Zehme commented on MYFACES-348: ----------------------------------- I do not know what is proposed for JSF 1.2. This fix was independently developed. Thanks, Dan > JSF tags do not use the pageContext for the tag for output > ---------------------------------------------------------- > > Key: MYFACES-348 > URL: http://issues.apache.org/jira/browse/MYFACES-348 > Project: MyFaces > Type: Bug > Components: JSF 1.1 > Versions: 1.0.9 beta > Environment: Windows 2000, JBoss and Weblogic > Reporter: Dan Zehme > > When the JSF tags write to the output stream, they get the ResponseWriter > from the FacesContext. This ResponseWriter is set up using pageContext of > the first tag encountered during the processing of a request. If JSF > controls are used with JSP pages that are included, the result is that the > JSF output often appears before the JSP output that the JSF output should > have been mixed with. This is because the included pages have a new > PageContext and therefore the wrong JspWriter is used. This problem is > described in Hans Bergsten's book "Java Server Faces" on pages 218-219. This > is also the reason for the <f:verbatim> tag. > This problem can be eliminated and the use of the <f:verbatim> tag removed if > the UIComponentTag.doStart/doEnd would push/pop ResponseWriters based on > changes to the pageContext. More explicitly: > add to _PageContextOutWriter: > public PageContext getPageContext() { return _pageContext } > in UIComponentTag, add: > private ResponseWriter _pushedWriter = false; > in UIComponentTag.setupResponseWriter() before null check add: > if (_writer instanceof _PageContextOutWriter && > ((_PageContextOutWriter)_writer).getPageContext() != pageContext) { > // PageContext has changed; push the Writer > _pushedWriter = _writer; > _writer = null; > } > at start of UIComponentTag.doEndTag() add: > if (_pushedWriter != null) { > // Restore the previous writer > _writer = _pushedWriter > _pushedWriter = null; > FacesContext facesContext = getFacesContext(); > facesContext.setResponseWriter(_writer); > } -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira