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 2020/06/23 11:04:13 UTC
[myfaces] branch 2.3.x updated: MYFACES-4345 ClientWindow url
rendering doesn't follow the specs
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 5341191 MYFACES-4345 ClientWindow url rendering doesn't follow the specs
5341191 is described below
commit 534119109af4e51052cea252b311f6485f5e8273
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Tue Jun 23 13:03:51 2020 +0200
MYFACES-4345 ClientWindow url rendering doesn't follow the specs
---
.../servlet/ServletExternalContextImpl.java | 34 ++++++++++++----------
1 file changed, 18 insertions(+), 16 deletions(-)
diff --git a/impl/src/main/java/org/apache/myfaces/context/servlet/ServletExternalContextImpl.java b/impl/src/main/java/org/apache/myfaces/context/servlet/ServletExternalContextImpl.java
index c74f2d6..76b6969 100755
--- a/impl/src/main/java/org/apache/myfaces/context/servlet/ServletExternalContextImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/context/servlet/ServletExternalContextImpl.java
@@ -28,6 +28,7 @@ import java.net.URLDecoder;
import java.net.URLEncoder;
import java.security.Principal;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -45,6 +46,7 @@ import javax.faces.context.FlashFactory;
import javax.faces.context.PartialResponseWriter;
import javax.faces.context.PartialViewContext;
import javax.faces.lifecycle.ClientWindow;
+import javax.faces.render.ResponseStateManager;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
@@ -932,27 +934,27 @@ public final class ServletExternalContextImpl extends ServletExternalContextImpl
FacesContext facesContext = getCurrentFacesContext();
ClientWindow window = facesContext.getExternalContext().getClientWindow();
- if (window != null)
+ if (window != null && window.isClientWindowRenderModeEnabled(facesContext))
{
- //TODO: Use StringBuilder or some optimization.
- if (window.isClientWindowRenderModeEnabled(facesContext))
+ if (paramMap == null)
{
- Map<String, String> map = window.getQueryURLParameters(facesContext);
- if (map != null)
+ paramMap = new HashMap<String, List<String>>();
+ }
+
+ if (!paramMap.containsKey(ResponseStateManager.CLIENT_WINDOW_URL_PARAM))
+ {
+ paramMap.put(ResponseStateManager.CLIENT_WINDOW_URL_PARAM, Arrays.asList(window.getId()));
+ }
+
+ Map<String, String> additionalQueryURLParameters = window.getQueryURLParameters(facesContext);
+ if (additionalQueryURLParameters != null)
+ {
+ for (Map.Entry<String , String> entry : additionalQueryURLParameters.entrySet())
{
- for (Map.Entry<String , String> entry : map.entrySet())
- {
- ArrayList<String> value = new ArrayList<String>(1);
- value.add(entry.getValue());
- if (paramMap == null)
- {
- paramMap = new HashMap<String, List<String>>();
- }
- paramMap.put(entry.getKey(), value);
- }
+ paramMap.put(entry.getKey(), Arrays.asList(entry.getValue()));
}
}
- }
+ }
boolean hasParams = paramMap != null && paramMap.size()>0;