myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Kočí (JIRA) <...@myfaces.apache.org>
Subject [jira] [Commented] (MYFACES-3157) Fix order of isRendered and pushComponentToEL invocations
Date Thu, 26 May 2011 20:20:47 GMT

    [ https://issues.apache.org/jira/browse/MYFACES-3157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13039902#comment-13039902
] 

Martin Kočí commented on MYFACES-3157:
--------------------------------------

Classes from API where if (!isRendered()) is used:

javax.faces.render.Renderer.encodeChildren(FacesContext, UIComponent)

javax.faces.component.UIComponent.isVisitable(VisitContext)
javax.faces.component.UIComponent.encodeAll(FacesContext)
javax.faces.component.UIComponentBase._isPhaseExecutable(FacesContext)

javax.faces.component.UIData.processDecodes(FacesContext)
javax.faces.component.UIData.processValidators(FacesContext)
javax.faces.component.UIData.processUpdates(FacesContext)
javax.faces.component.UIData.processColumnFacets(FacesContext, int)
javax.faces.component.UIData.processColumnChildren(FacesContext, int)

javax.faces.component.UIInput.processDecodes(FacesContext)
javax.faces.component.UIInput.processValidators(FacesContext)
javax.faces.component.UIInput.processUpdates(FacesContext)


UIData code is inconsistent already: UIData.processDecodes
if (!isRendered())
  return;
pushComponentToEL(context, this);


and UIData.processUpdates:
pushComponentToEL(context, this);
if (!isRendered())
 return;



> Fix order of isRendered and pushComponentToEL invocations
> ---------------------------------------------------------
>
>                 Key: MYFACES-3157
>                 URL: https://issues.apache.org/jira/browse/MYFACES-3157
>             Project: MyFaces Core
>          Issue Type: Bug
>         Environment: myfaces core trunk
>            Reporter: Martin Kočí
>
> Current specification for lifecycles methods:
> 1) processDecodes
> 2) processValidators
> 3) processUpdates
> 4) encodeAll
> 4) encodeBegin
> explicitly says that:
> 1) If the rendered property of this UIComponent is false, skip further processing.
> 2) call pushComponentToEL
> But in that order of invocations it is impossible to achieve rendered like this:
> <h:outputText rendered="#{component.id eq 'outputTextId'}" id="outputTextId" />
> i.e. any rendered ValueEpression based on component itself. In Myfaces  we should implement
in in reverse order, because specified behaviour is buggy.
> Please see this mail thread: http://www.mail-archive.com/dev@myfaces.apache.org/msg53300.html
> and
> http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-1002
> for details.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message