[
https://issues.apache.org/jira/browse/MYFACES-3986?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14963484#comment-14963484
]
Leonardo Uribe commented on MYFACES-3986:
-----------------------------------------
The lines mentioned are part of a solution proposed for MYFACES-3426.
JSP was deprecated in JSF 2.0, which is the same version where viewScope was
added. JSF spec section 10.1.2 says this:
"... Naturally, new features built on Facelets in JSF 2.0 are not available in
pre JSF 2.0 Facelets and will only work in JSF
2.0 or later. ..."
It is clear in JSP, ResolverBuilderForJSP is used instead
ResolverBuilderForFaces (which is used in Facelets). In ResolverBuilderForJSP
there is a call to ImplicitObjectResolver.makeResolverForJSP(), I suppose
adding these lines like this:
ImplicitObject io17 = new ViewScopeImplicitObject();
forFacesList.put(io17.getName(), io17);
will solve the problem.
> 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)