MYFACES-4048 TransientStateHolder values must be stored in the state if current phase is before render response (add null check to fix another tck test related to UIForm.isSubmitted)
diff --git a/api/src/main/java/javax/faces/component/UIComponentBase.java b/api/src/main/java/javax/faces/component/UIComponentBase.java
index 5c6e89e..fd8548b 100755
--- a/api/src/main/java/javax/faces/component/UIComponentBase.java
+++ b/api/src/main/java/javax/faces/component/UIComponentBase.java
@@ -1985,7 +1985,8 @@
}
Object transientState = null;
- if (!context.getCurrentPhaseId().equals(PhaseId.RENDER_RESPONSE))
+ if (context.getCurrentPhaseId() != null &&
+ !PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
{
transientState = saveTransientState(context);
}
@@ -2036,7 +2037,8 @@
values[6] = _markCreated;
values[7] = _rendererType;
values[8] = _capabilities;
- if (!PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
+ if (context.getCurrentPhaseId() != null &&
+ !PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
{
values[9] = saveTransientState(context);
}
diff --git a/api/src/main/java/javax/faces/component/UIData.java b/api/src/main/java/javax/faces/component/UIData.java
index 9477ee7..ec91f94 100644
--- a/api/src/main/java/javax/faces/component/UIData.java
+++ b/api/src/main/java/javax/faces/component/UIData.java
@@ -1528,7 +1528,8 @@
if (initialStateMarked())
{
Object parentSaved = super.saveState(context);
- if (!PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
+ if (context.getCurrentPhaseId() != null &&
+ !PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
{
if (parentSaved == null &&_rowDeltaStates.isEmpty() && _rowStates.isEmpty())
{
@@ -1561,7 +1562,8 @@
}
else
{
- if (!PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
+ if (context.getCurrentPhaseId() != null &&
+ !PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
{
Object values[] = new Object[4];
values[0] = super.saveState(context);
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/component/UIRepeat.java b/impl/src/main/java/org/apache/myfaces/view/facelets/component/UIRepeat.java
index c78d8f6..521997f 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/component/UIRepeat.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/component/UIRepeat.java
@@ -1567,7 +1567,8 @@
if (initialStateMarked())
{
Object parentSaved = super.saveState(context);
- if (!PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
+ if (context.getCurrentPhaseId() != null &&
+ !PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
{
if (parentSaved == null /*&&_rowDeltaStates.isEmpty()*/ && _rowStates.isEmpty())
{
@@ -1601,7 +1602,8 @@
}
else
{
- if (!PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
+ if (context.getCurrentPhaseId() != null &&
+ !PhaseId.RENDER_RESPONSE.equals(context.getCurrentPhaseId()))
{
Object values[] = new Object[3];
values[0] = super.saveState(context);