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 2023/01/16 12:15:55 UTC
[myfaces] branch main updated: MYFACES-4543
This is an automated email from the ASF dual-hosted git repository.
tandraschko pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/myfaces.git
The following commit(s) were added to refs/heads/main by this push:
new 45acec732 MYFACES-4543
45acec732 is described below
commit 45acec7320424250672c258b546c3fc934409aa8
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Mon Jan 16 13:15:46 2023 +0100
MYFACES-4543
---
.../java/org/apache/myfaces/config/FacesConfigurator.java | 15 +++++++++++----
.../java/org/apache/myfaces/context/flash/FlashImpl.java | 13 ++++++++++---
.../lifecycle/clientwindow/ClientWindowFactoryImpl.java | 2 +-
3 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java b/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java
index 2fc7ba44b..075978436 100755
--- a/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java
+++ b/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java
@@ -1452,7 +1452,7 @@ public class FacesConfigurator
public static void enableDefaultWindowMode(FacesContext facesContext)
{
- if (!isEnableDefaultWindowMode(facesContext))
+ if (!isEnableDefaultWindowMode(facesContext.getExternalContext()))
{
String windowMode = WebConfigParamUtils.getStringInitParameter(
facesContext.getExternalContext(),
@@ -1466,7 +1466,7 @@ public class FacesConfigurator
ClientWindow.CLIENT_WINDOW_MODE_PARAM_NAME,
ClientWindowFactoryImpl.WINDOW_MODE_URL);
- log.info("The current configuration requires client window enabled, setting it to '"+
+ log.info("The current configuration requires ClientWindow enabled, setting it to '"+
defaultWindowMode+ '\'');
facesContext.getExternalContext().getApplicationMap().put(
@@ -1475,12 +1475,19 @@ public class FacesConfigurator
}
}
- public static boolean isEnableDefaultWindowMode(FacesContext facesContext)
+ public static boolean isEnableDefaultWindowMode(ExternalContext externalContext)
{
- return Boolean.TRUE.equals(facesContext.getExternalContext().
+ return Boolean.TRUE.equals(externalContext.
getApplicationMap().get(ENABLE_DEFAULT_WINDOW_MODE));
}
+ public static boolean isUrlWindowMode(ExternalContext externalContext)
+ {
+ return isEnableDefaultWindowMode(externalContext)
+ || ClientWindowFactoryImpl.WINDOW_MODE_URL.equals(
+ externalContext.getInitParameter(ClientWindow.CLIENT_WINDOW_MODE_PARAM_NAME));
+ }
+
public void configureProtectedViews()
{
Application application = getApplication();
diff --git a/impl/src/main/java/org/apache/myfaces/context/flash/FlashImpl.java b/impl/src/main/java/org/apache/myfaces/context/flash/FlashImpl.java
index fe6d75727..e97d514c8 100644
--- a/impl/src/main/java/org/apache/myfaces/context/flash/FlashImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/context/flash/FlashImpl.java
@@ -45,6 +45,7 @@ import jakarta.faces.event.PostPutFlashValueEvent;
import jakarta.faces.event.PreClearFlashEvent;
import jakarta.faces.event.PreRemoveFlashValueEvent;
import jakarta.faces.lifecycle.ClientWindow;
+import org.apache.myfaces.config.FacesConfigurator;
import org.apache.myfaces.util.ExternalSpecifications;
import org.apache.myfaces.util.lang.StringUtils;
@@ -166,11 +167,13 @@ public class FlashImpl extends Flash implements ReleasableFlash
// ~ private fields and constructor ---------------------------------------
private boolean _flashScopeDisabled;
+ private boolean _clientWindowUrlModeEnabled;
public FlashImpl(ExternalContext externalContext)
{
// Read whether flash scope is disabled.
_flashScopeDisabled = MyfacesConfig.getCurrentInstance(externalContext).isFlashScopeDisabled();
+ _clientWindowUrlModeEnabled = FacesConfigurator.isUrlWindowMode(externalContext);
}
// ~ methods from jakarta.faces.context.Flash -------------------------------
@@ -750,7 +753,9 @@ public class FlashImpl extends Flash implements ReleasableFlash
ExternalContext externalContext = facesContext.getExternalContext();
String tokenValue = (String) externalContext.getRequestMap().get(FLASH_RENDER_MAP_TOKEN);
ClientWindow clientWindow = externalContext.getClientWindow();
- if (clientWindow != null)
+
+ // MYFACES-4543 skip this ClientWindow logic on URL mode as the flash will be lost without initial redirect
+ if (clientWindow != null && !_clientWindowUrlModeEnabled)
{
if (facesContext.getApplication().getStateManager().isSavingStateInClient(facesContext))
{
@@ -795,7 +800,8 @@ public class FlashImpl extends Flash implements ReleasableFlash
ExternalContext externalContext = facesContext.getExternalContext();
String tokenValue = null;
ClientWindow clientWindow = externalContext.getClientWindow();
- if (clientWindow != null)
+ // MYFACES-4543 skip this ClientWindow logic on URL mode as the flash will be lost without initial redirect
+ if (clientWindow != null && !_clientWindowUrlModeEnabled)
{
if (facesContext.getApplication().getStateManager().isSavingStateInClient(facesContext))
{
@@ -1155,7 +1161,8 @@ public class FlashImpl extends Flash implements ReleasableFlash
{
ExternalContext externalContext = facesContext.getExternalContext();
ClientWindow clientWindow = externalContext.getClientWindow();
- if (clientWindow != null)
+ // MYFACES-4543 skip this ClientWindow logic on URL mode as the flash will be lost without initial redirect
+ if (clientWindow != null && !_clientWindowUrlModeEnabled)
{
if (token != null)
{
diff --git a/impl/src/main/java/org/apache/myfaces/lifecycle/clientwindow/ClientWindowFactoryImpl.java b/impl/src/main/java/org/apache/myfaces/lifecycle/clientwindow/ClientWindowFactoryImpl.java
index 8dcce3aba..42bdd122b 100644
--- a/impl/src/main/java/org/apache/myfaces/lifecycle/clientwindow/ClientWindowFactoryImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/lifecycle/clientwindow/ClientWindowFactoryImpl.java
@@ -80,7 +80,7 @@ public class ClientWindowFactoryImpl extends ClientWindowFactory
{
if (windowMode == null)
{
- if (FacesConfigurator.isEnableDefaultWindowMode(context))
+ if (FacesConfigurator.isEnableDefaultWindowMode(context.getExternalContext()))
{
windowMode = WebConfigParamUtils.getStringInitParameter(
context.getExternalContext(),