You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2016/04/06 04:34:51 UTC
svn commit: r1737907 - in /myfaces/core/trunk/impl/src:
main/java/org/apache/myfaces/view/facelets/
main/java/org/apache/myfaces/view/facelets/el/
test/java/org/apache/myfaces/view/facelets/pss/acid/
test/java/org/apache/myfaces/view/facelets/pss/acid/...
Author: lu4242
Date: Wed Apr 6 02:34:51 2016
New Revision: 1737907
URL: http://svn.apache.org/viewvc?rev=1737907&view=rev
Log:
MYFACES-4041 EL evaluation fails when state is saved because FaceletState object is not present
Added:
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/AcidARCacheELMyFacesRequestTestCase.java
- copied, changed from r1737696, myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/AcidNoPssMyFacesRequestTestCase.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/component/UISimpleComponent2.java
- copied, changed from r1737696, myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/component/UISimpleComponent1.java
myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent2.xhtml
- copied, changed from r1737696, myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent1.xhtml
myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent2_1.xhtml
- copied, changed from r1737696, myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent1.xhtml
Modified:
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementStrategy.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/el/FaceletStateValueExpression.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/AcidMyFacesRequestTestCase.java
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementStrategy.java?rev=1737907&r1=1737906&r2=1737907&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementStrategy.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementStrategy.java Wed Apr 6 02:34:51 2016
@@ -765,6 +765,8 @@ public class DefaultFaceletsStateManagem
UIComponentBase.saveAttachedState(context, faceletViewState));
//Do not save on UIViewRoot
view.getAttributes().remove(ComponentSupport.FACELET_STATE_INSTANCE);
+ view.getTransientStateHelper().putTransient(
+ ComponentSupport.FACELET_STATE_INSTANCE, faceletViewState);
}
if (_viewPoolProcessor != null &&
_viewPoolProcessor.isViewPoolEnabledForThisView(context, view))
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/el/FaceletStateValueExpression.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/el/FaceletStateValueExpression.java?rev=1737907&r1=1737906&r2=1737907&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/el/FaceletStateValueExpression.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/el/FaceletStateValueExpression.java Wed Apr 6 02:34:51 2016
@@ -59,6 +59,11 @@ public class FaceletStateValueExpression
UIViewRoot root = facesContext.getViewRoot();
FaceletState map = (FaceletState) root.getAttributes().get(
ComponentSupport.FACELET_STATE_INSTANCE);
+ if (map == null)
+ {
+ map = (FaceletState)root.getTransientStateHelper().getTransient(
+ ComponentSupport.FACELET_STATE_INSTANCE);
+ }
return map.getBinding(uniqueId, key);
}
@@ -72,6 +77,11 @@ public class FaceletStateValueExpression
UIViewRoot root = facesContext.getViewRoot();
FaceletState map = (FaceletState) root.getAttributes().get(
ComponentSupport.FACELET_STATE_INSTANCE);
+ if (map == null)
+ {
+ map = (FaceletState)root.getTransientStateHelper().getTransient(
+ ComponentSupport.FACELET_STATE_INSTANCE);
+ }
return map.getBinding(uniqueId, key);
}
Copied: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/AcidARCacheELMyFacesRequestTestCase.java (from r1737696, myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/AcidNoPssMyFacesRequestTestCase.java)
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/AcidARCacheELMyFacesRequestTestCase.java?p2=myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/AcidARCacheELMyFacesRequestTestCase.java&p1=myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/AcidNoPssMyFacesRequestTestCase.java&r1=1737696&r2=1737907&rev=1737907&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/AcidNoPssMyFacesRequestTestCase.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/AcidARCacheELMyFacesRequestTestCase.java Wed Apr 6 02:34:51 2016
@@ -19,15 +19,17 @@
package org.apache.myfaces.view.facelets.pss.acid;
import javax.faces.application.StateManager;
+import org.apache.myfaces.view.facelets.impl.FaceletCompositionContextImpl;
-public class AcidNoPssMyFacesRequestTestCase extends AcidMyFacesRequestTestCase
+public class AcidARCacheELMyFacesRequestTestCase extends AcidMyFacesRequestTestCase
{
@Override
protected void setUpWebConfigParams() throws Exception
{
super.setUpWebConfigParams();
- servletContext.addInitParameter(StateManager.PARTIAL_STATE_SAVING_PARAM_NAME, "false");
+ servletContext.addInitParameter(FaceletCompositionContextImpl.INIT_PARAM_CACHE_EL_EXPRESSIONS,
+ "alwaysRecompile");
}
}
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/AcidMyFacesRequestTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/AcidMyFacesRequestTestCase.java?rev=1737907&r1=1737906&r2=1737907&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/AcidMyFacesRequestTestCase.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/AcidMyFacesRequestTestCase.java Wed Apr 6 02:34:51 2016
@@ -34,6 +34,7 @@ import org.apache.myfaces.mc.test.core.A
import org.apache.myfaces.shared.config.MyfacesConfig;
import org.apache.myfaces.test.mock.MockPrintWriter;
import org.apache.myfaces.view.facelets.pss.acid.component.UISimpleComponent1;
+import org.apache.myfaces.view.facelets.pss.acid.component.UISimpleComponent2;
import org.apache.myfaces.view.facelets.pss.acid.managed.CheckActionEventBean;
import org.apache.myfaces.view.facelets.pss.acid.managed.ComponentBindingBean;
import org.apache.myfaces.view.facelets.pss.acid.managed.ComponentBindingFormBean;
@@ -2139,6 +2140,29 @@ public class AcidMyFacesRequestTestCase
endRequest();
}
+
+ @Test
+ public void testSimpleComponent2() throws Exception
+ {
+ startViewRequest("/simpleComponent2.xhtml");
+ processLifecycleExecuteAndRender();
+
+ UIComponent comp = facesContext.getViewRoot().findComponent("mainForm:component");
+ Assert.assertNotNull(comp);
+ Assert.assertTrue(comp instanceof UISimpleComponent2);
+ //Assert.assertEquals(1, comp.getChildCount());
+ //Assert.assertEquals("Dynamically added child", comp.getChildren().get(0).getAttributes().get("value"));
+
+ UICommand button = (UICommand) facesContext.getViewRoot().findComponent("mainForm:postback");
+ client.submit(button);
+ processLifecycleExecuteAndRender();
+
+ comp = facesContext.getViewRoot().findComponent("mainForm:component");
+ Assert.assertNotNull(comp);
+ Assert.assertTrue(comp instanceof UISimpleComponent2);
+
+ endRequest();
+ }
@Test
public void testUIRepeatCC1() throws Exception
Copied: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/component/UISimpleComponent2.java (from r1737696, myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/component/UISimpleComponent1.java)
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/component/UISimpleComponent2.java?p2=myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/component/UISimpleComponent2.java&p1=myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/component/UISimpleComponent1.java&r1=1737696&r2=1737907&rev=1737907&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/component/UISimpleComponent1.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/pss/acid/component/UISimpleComponent2.java Wed Apr 6 02:34:51 2016
@@ -19,7 +19,8 @@
package org.apache.myfaces.view.facelets.pss.acid.component;
import javax.faces.component.FacesComponent;
-import javax.faces.component.UIPanel;
+import javax.faces.component.UIInput;
+import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ComponentSystemEvent;
import javax.faces.event.ListenerFor;
@@ -31,12 +32,12 @@ import javax.faces.event.PostRestoreStat
*/
@ListenerFor(systemEventClass = PostRestoreStateEvent.class)
@FacesComponent(namespace = "http://my.namespace.com/components",
- createTag = true, tagName = "simpleComponent1",
- value = "com.myapp.UISimpleComponent1")
-public class UISimpleComponent1 extends UIPanel
+ createTag = true, tagName = "simpleComponent2",
+ value = "com.myapp.UISimpleComponent2")
+public class UISimpleComponent2 extends UIInput
{
- public UISimpleComponent1()
+ public UISimpleComponent2()
{
setRendererType(null);
}
@@ -55,4 +56,13 @@ public class UISimpleComponent1 extends
super.processEvent(event);
}
+ @Override
+ public Object saveState(FacesContext context)
+ {
+ String value = (String) this.getValue();
+
+ return super.saveState(context);
+ }
+
+
}
Copied: myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent2.xhtml (from r1737696, myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent1.xhtml)
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent2.xhtml?p2=myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent2.xhtml&p1=myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent1.xhtml&r1=1737696&r2=1737907&rev=1737907&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent1.xhtml (original)
+++ myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent2.xhtml Wed Apr 6 02:34:51 2016
@@ -31,7 +31,10 @@
<h:form id="mainForm">
- <test1:simpleComponent1 id="component"/>
+
+ <ui:include src="simpleComponent2_1.xhtml">
+ <ui:param name="passedValue" value ="#{testManagedBean.page}"/>
+ </ui:include>
<br/>
Copied: myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent2_1.xhtml (from r1737696, myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent1.xhtml)
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent2_1.xhtml?p2=myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent2_1.xhtml&p1=myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent1.xhtml&r1=1737696&r2=1737907&rev=1737907&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent1.xhtml (original)
+++ myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/pss/acid/simpleComponent2_1.xhtml Wed Apr 6 02:34:51 2016
@@ -17,27 +17,9 @@
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:test="http://testcomponent"
- xmlns:test1="http://my.namespace.com/components"
- template="common.xhtml">
+ xmlns:test1="http://my.namespace.com/components">
- <h2>Add Test Instructions</h2>
-
- <ol>
- <li>The component should have dynamically modified the tree so that 'Dynamically added child' appears inside the red box</li>
- <li>Click 'POSTback'. The 'Dynamically added child' should not disappear (because it should have been serialized in the ViewState)</li>
- </ol>
-
- <h:messages/>
-
- <h:form id="mainForm">
-
- <test1:simpleComponent1 id="component"/>
-
- <br/>
-
- <h:commandButton id="postback" value="POSTback" action="#{testManagedBean.save}"/>
-
- </h:form>
+ <test1:simpleComponent2 id="component" value="#{passedValue}"/>
</ui:composition>