myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "dennis hoersch (JIRA)" <...@myfaces.apache.org>
Subject [jira] [Commented] (MYFACES-3520) False evaluation of variables/params with the same name
Date Thu, 03 May 2012 16:26:50 GMT

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

dennis hoersch commented on MYFACES-3520:
-----------------------------------------

Sorry, I don't get any notice about your reply.

"c:forEach var should not pass through ui:include or composite components.": Yes, that was
what I expected.

At the moment I have no idea how to change c:forEach that way to test it...

Can you give any hints?



                
> False evaluation of variables/params with the same name
> -------------------------------------------------------
>
>                 Key: MYFACES-3520
>                 URL: https://issues.apache.org/jira/browse/MYFACES-3520
>             Project: MyFaces Core
>          Issue Type: Bug
>    Affects Versions: 2.1.6
>            Reporter: dennis hoersch
>
> I have an scenario where an xhml is included. The included file has a parameter with
the same name as some outer variable. In the included file the parameter is ignored and the
outer variable is used. 
> Some xhtml:
> <c:forEach var="item" begin="1" end="3">
>     <div>
>         <ui:include src="templateContextTestInclude.xhtml">
>             <ui:param name="item" value="#{item + 10}" />
>         </ui:include>    
>     </div>
> </c:forEach> 
> templateContextTestInclude.xhtml:
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <html xmlns="http://www.w3.org/1999/xhtml"
>     xmlns:ui="http://java.sun.com/jsf/facelets"
>     xmlns:h="http://java.sun.com/jsf/html"
>     xmlns:f="http://java.sun.com/jsf/core"
>     xmlns:c="http://java.sun.com/jsp/jstl/core"
>     xmlns:t="http://myfaces.apache.org/tomahawk">
>     <body>
>         <ui:composition>        
>             Item: <h:outputText value="#{item}" /><br/>       
>         </ui:composition>
>     </body>
> </html>  
> I found out that the "hierarchy" of VariableMappers is asked for a value before the 'DefaultVariableMapper'
tests the current template/page context. That was not what I expected. Is that how it should
be?
> In JSF1 it works that way.
> (If I change the VariableMapperWrapper locally to test the template/page context first
the behaviour is as I would have expected (don't know if it is the right place ;-)):
>     public ValueExpression resolveVariable(String variable)
>     {
>         
>         AbstractFaceletContext faceletContext = (AbstractFaceletContext) FacesContext.getCurrentInstance().getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
>         
>         //Check on page and template context
>         PageContext pageContext = faceletContext.getPageContext(); 
>         if (pageContext != null && pageContext.getAttributeCount() > 0)
>         {
>             if (pageContext.getAttributes().containsKey(variable))
>             {
>                 ValueExpression returnValue = pageContext.getAttributes().get(variable);
>                 if (_trackResolveVariables)
>                 {
>                     _variableResolved = true;
>                 }
>                 return returnValue;
>             }
>         }
>         
>         TemplateContext templateContext = faceletContext.getTemplateContext();
>         if (templateContext  != null && !templateContext.isParameterEmpty())
>         {
>             if (templateContext.getParameterMap().containsKey(variable))
>             {
>                 ValueExpression returnValue = templateContext.getParameter(variable);
>                 if (_trackResolveVariables)
>                 {
>                     _variableResolved = true;
>                 }
>                 return returnValue;
>             }
>         }
>         
>         ValueExpression ve = null;
>         ....
> )
> Thanks in advance,
> dennis

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message