You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by vo...@apache.org on 2023/01/11 15:33:49 UTC
[myfaces] branch main updated: Do not set disabled inputs as submitted values
This is an automated email from the ASF dual-hosted git repository.
volosied 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 80183a156 Do not set disabled inputs as submitted values
new 5e047783c Merge pull request #474 from volosied/MYFACES-4544
80183a156 is described below
commit 80183a15649eaeab97585e2591454443a8e38339
Author: Volodymyr Siedlecki <vo...@gmail.com>
AuthorDate: Tue Jan 10 16:04:44 2023 -0500
Do not set disabled inputs as submitted values
---
.../renderkit/html/util/HtmlRendererUtils.java | 45 ++++++++++++++++++++--
1 file changed, 42 insertions(+), 3 deletions(-)
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/util/HtmlRendererUtils.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/util/HtmlRendererUtils.java
index 2f6275632..3344fb08a 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/util/HtmlRendererUtils.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/util/HtmlRendererUtils.java
@@ -19,6 +19,7 @@
package org.apache.myfaces.renderkit.html.util;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -43,6 +44,7 @@ import jakarta.faces.component.UISelectBoolean;
import jakarta.faces.component.UISelectMany;
import jakarta.faces.component.UISelectOne;
import jakarta.faces.component.UIViewRoot;
+import jakarta.faces.component.ValueHolder;
import jakarta.faces.component.behavior.ClientBehavior;
import jakarta.faces.component.behavior.ClientBehaviorContext;
import jakarta.faces.component.behavior.ClientBehaviorHolder;
@@ -211,8 +213,27 @@ public final class HtmlRendererUtils
if (paramValuesMap.containsKey(clientId))
{
- String[] reqValues = (String[]) paramValuesMap.get(clientId);
- ((EditableValueHolder) component).setSubmittedValue(reqValues);
+ ArrayList<String> reqValues = new ArrayList<String>(Arrays.asList((String[]) paramValuesMap.get(clientId)));
+
+ List<SelectItemInfo> selections = SelectItemsUtils.getSelectItemInfoList(
+ (UISelectMany) component, facesContext);
+
+ // if disabled value is submitted, do not use it
+ for(SelectItemInfo itemInfo: selections)
+ {
+ if(itemInfo.getItem().isDisabled())
+ {
+ String result = SharedRendererUtils.getConvertedStringValue(
+ facesContext,component,((ValueHolder) component).getConverter(), itemInfo.getItem().getValue());
+ if(reqValues.contains(result))
+ {
+ reqValues.remove(result);
+ }
+ }
+ }
+ // submitted value needs to be of type String[]
+ String[] submittedValue = (String[]) reqValues.toArray(new String[reqValues.size()]);
+ ((EditableValueHolder) component).setSubmittedValue(submittedValue);
}
else
{
@@ -278,8 +299,26 @@ public final class HtmlRendererUtils
String clientId = component.getClientId(facesContext);
if (paramMap.containsKey(clientId))
{
+ String submittedValue = (String) paramMap.get(clientId);
+ List<SelectItemInfo> selections = SelectItemsUtils.getSelectItemInfoList(
+ (UISelectOne) component, facesContext);
+
+ // if disabled value is submitted, do not use it
+ for(SelectItemInfo itemInfo: selections)
+ {
+ if(itemInfo.getItem().isDisabled())
+ {
+ Object selectItemValue = itemInfo.getItem().getValue();
+ String convertedValue = SharedRendererUtils.getConvertedStringValue(
+ facesContext,component,((ValueHolder) component).getConverter(), selectItemValue);
+ if(convertedValue.equals(selectItemValue))
+ { // disabled value matches submitted value
+ submittedValue = RendererUtils.EMPTY_STRING;
+ }
+ }
+ }
//request parameter found, set submitted value
- ((EditableValueHolder) component).setSubmittedValue(paramMap.get(clientId));
+ ((EditableValueHolder) component).setSubmittedValue(submittedValue);
}
else
{