myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bill Lucy (JIRA)" <...@myfaces.apache.org>
Subject [jira] [Commented] (MYFACES-3986) viewScope implicit object not resolved in a JSP page
Date Mon, 19 Oct 2015 19:05:27 GMT

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

Bill Lucy commented on MYFACES-3986:
------------------------------------

Okay, this makes sense to me, given the context of JSP deprecation.  Adding the ViewScopeImplicitObject
to the JSP ImplicitObjectResolver like you mention works fine, and is probably a better solution
that undoing the MYFACES-3426 change.  The spec says in 5.6.1.1 that the JSP  implicit resolver
should "only resolve(ing) the “facesContext” and “view” implicit objects."  However,
I think adding the extra resolver here is fine, since we're just adding what's essentially
extra functionality.  Do you agree with that assessment [~lu4242]?

> viewScope implicit object not resolved in a JSP page
> ----------------------------------------------------
>
>                 Key: MYFACES-3986
>                 URL: https://issues.apache.org/jira/browse/MYFACES-3986
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: JSR-344
>    Affects Versions: 2.2.8
>            Reporter: Jay Sartoris
>         Attachments: MYFACES-3986.patch
>
>
> Consider this scenario:
> A JSP file has the following contents:
> =============
> <!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:h="http://java.sun.com/jsf/html"
>       xmlns:f="http://xmlns.jcp.org/jsf/core"
>       xmlns:c="http://xmlns.jcp.org/jsp/jstl/core" >
> <body>
> <f:view>
>  <h:form id="form1">
>   <c:set target="${viewScope}" property="test" value="testValue2" />
>   <h:outputText id="foo1" value="#{viewScope.test}" />
>  </h:form>
> </f:view>
> </body>
> </html>
> ============
> When requested (with the faces mapping), it fails with this exception:
> javax.servlet.jsp.JspTagException:
> at org.apache.taglibs.standard.tag.common.core.SetSupport.doEndTag(SetSupport.java:195)
> at [internal classes]
> The reason for that exception is because the target attribute with a value of "viewScope"
of the c:set tag was resolved to null. 
> The Problem:
> -----------
> I think the issue here is that the wrong FacesCompositeELResolver is used while processing
the tags.  From my debugging, I see that there are two FacesCompositeELResolvers created in
this scenario and also what is mentioned in the JSF 2.2 spec, section 5.6.  One with JSP scope
and one with Faces scope.  The ImplicitElResolvers created in each of these scopes is different
as detailed in the spec.  
> The problem I see is that when processing the tags, the Faces scoped ELResolvers are
created, but not used when processing the c:set tag to resolve the viewScope implicit map.
 When processing this tag, it will use the JSP scoped resolvers and therefore cannot resolve
the viewScope and throws the exception mentioned above because the org.apache.myfaces.el.unified.resolver.implicitobject.ViewScopeImplicitObject
is never called as it is only associated with a Faces scoped ImplicitObjectResolver.
> Even though this is a JSP file, shouldn't the Faces scoped resolvers be used when this
is a JSF file? 
>  
> This same scenario works on Mojarra 2.2.10 with Tomcat 8.0.15, but fails when using MyFaces.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message