Jay Sartoris created MYFACES-3986:
-------------------------------------

             Summary: 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


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)

Reply via email to