You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2024/02/12 09:14:14 UTC
(myfaces) branch 2.3.x updated: MYFACES-4650
This is an automated email from the ASF dual-hosted git repository.
tandraschko pushed a commit to branch 2.3.x
in repository https://gitbox.apache.org/repos/asf/myfaces.git
The following commit(s) were added to refs/heads/2.3.x by this push:
new 87ecafd48 MYFACES-4650
87ecafd48 is described below
commit 87ecafd4804e512f1a2f07f828e3cd23708c4421
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Mon Feb 12 10:13:56 2024 +0100
MYFACES-4650
---
.../context/servlet/PartialViewContextImpl.java | 58 +++++++++++++++-------
1 file changed, 39 insertions(+), 19 deletions(-)
diff --git a/impl/src/main/java/org/apache/myfaces/context/servlet/PartialViewContextImpl.java b/impl/src/main/java/org/apache/myfaces/context/servlet/PartialViewContextImpl.java
index fcb233375..47c930eeb 100644
--- a/impl/src/main/java/org/apache/myfaces/context/servlet/PartialViewContextImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/context/servlet/PartialViewContextImpl.java
@@ -18,18 +18,15 @@
*/
package org.apache.myfaces.context.servlet;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.EnumSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
+import org.apache.myfaces.application.ResourceHandlerImpl;
+import org.apache.myfaces.context.PartialResponseWriterImpl;
+import org.apache.myfaces.context.RequestViewContext;
+import org.apache.myfaces.renderkit.html.HtmlResponseStateManager;
+import org.apache.myfaces.shared.renderkit.JSFAttr;
+import org.apache.myfaces.shared.util.StringUtils;
import javax.faces.FactoryFinder;
+import javax.faces.component.EditableValueHolder;
import javax.faces.component.UIComponent;
import javax.faces.component.UIViewParameter;
import javax.faces.component.UIViewRoot;
@@ -49,13 +46,16 @@ import javax.faces.lifecycle.ClientWindow;
import javax.faces.render.RenderKit;
import javax.faces.render.RenderKitFactory;
import javax.faces.view.ViewMetadata;
-import org.apache.myfaces.application.ResourceHandlerImpl;
-
-import org.apache.myfaces.context.PartialResponseWriterImpl;
-import org.apache.myfaces.context.RequestViewContext;
-import org.apache.myfaces.renderkit.html.HtmlResponseStateManager;
-import org.apache.myfaces.shared.renderkit.JSFAttr;
-import org.apache.myfaces.shared.util.StringUtils;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
public class PartialViewContextImpl extends PartialViewContext
{
@@ -79,6 +79,11 @@ public class PartialViewContextImpl extends PartialViewContext
private static final Set<VisitHint> PARTIAL_RENDER_HINTS =
Collections.unmodifiableSet(EnumSet.of(VisitHint.SKIP_UNRENDERED));
+ private static final VisitCallback RESET_VALUES_CALLBACK = new ResetValuesCallback();
+
+ private static final Set<VisitHint> RESET_VALUES_HINTS =
+ Collections.unmodifiableSet(EnumSet.of(VisitHint.SKIP_UNRENDERED));
+
private FacesContext _facesContext = null;
private boolean _released = false;
// Cached values, since their parent methods could be called
@@ -481,7 +486,9 @@ public class PartialViewContextImpl extends PartialViewContext
if (isResetValues())
{
- viewRoot.resetValues(_facesContext, getRenderIds());
+ VisitContext visitContext = VisitContext.createVisitContext(_facesContext, getRenderIds(),
+ RESET_VALUES_HINTS);
+ viewRoot.visitTree(visitContext, RESET_VALUES_CALLBACK);
}
if (pvc.isRenderAll())
@@ -613,7 +620,20 @@ public class PartialViewContextImpl extends PartialViewContext
}
}
-
+
+ // same like UIViewRoot#ResetValuesCallback
+ private static class ResetValuesCallback implements VisitCallback
+ {
+ public VisitResult visit(VisitContext context, UIComponent target)
+ {
+ if (target instanceof EditableValueHolder)
+ {
+ ((EditableValueHolder)target).resetValue();
+ }
+ return VisitResult.ACCEPT;
+ }
+ }
+
private void processRenderResource(FacesContext facesContext, PartialResponseWriter writer, RequestViewContext rvc,
List<UIComponent> updatedComponents, String target) throws IOException
{