(TRINIDAD-2555)
java.lang.NullPointerException in SimpleSelectOneRenderer with javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL enabled
diff --git a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SimpleSelectManyRenderer.java b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SimpleSelectManyRenderer.java
index 7ef4712..aaa4f2a 100644
--- a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SimpleSelectManyRenderer.java
+++ b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SimpleSelectManyRenderer.java
@@ -523,7 +523,7 @@
int[] indices = new int[values.length];
for (int i = 0; i < values.length; i++)
{
- indices[i] = SimpleSelectOneRenderer.__getIndex(values[i], selectItemList);
+ indices[i] = SimpleSelectOneRenderer.__getIndex(context, values[i], selectItemList);
}
// And sort it, but only if it's not reorderable
diff --git a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SimpleSelectOneRenderer.java b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SimpleSelectOneRenderer.java
index 3a71556..3254295 100644
--- a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SimpleSelectOneRenderer.java
+++ b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SimpleSelectOneRenderer.java
@@ -32,6 +32,7 @@
import org.apache.myfaces.trinidad.bean.FacesBean;
import org.apache.myfaces.trinidad.bean.PropertyKey;
+import org.apache.myfaces.trinidad.component.UIXEditableValue;
import org.apache.myfaces.trinidad.component.UIXSelectOne;
import org.apache.myfaces.trinidad.context.FormData;
import org.apache.myfaces.trinidad.context.RenderingContext;
@@ -212,7 +213,7 @@
List<SelectItem> selectItems = getSelectItems(component, converter, true);
- int index = __getIndex(submittedValue, selectItems);
+ int index = __getIndex(context, submittedValue, selectItems);
if (index < 0)
return null;
@@ -409,11 +410,12 @@
/**
* Convert a stringified index into an index, with range-checking.
*/
- static int __getIndex(
+ static int __getIndex(FacesContext context,
Object submittedValue,
List<SelectItem> selectItems)
{
- if ("".equals(submittedValue))
+ if ((submittedValue == null && UIXEditableValue.shouldInterpretEmptyStringSubmittedValuesAsNull(context))
+ || "".equals(submittedValue))
return -1;
try
@@ -556,7 +558,7 @@
// have to turn it into an int and range-check it
if ((submittedValue != null) && !valuePassThru)
{
- return __getIndex(submittedValue, selectItems);
+ return __getIndex(context, submittedValue, selectItems);
}
// Figure out the current value, whether it's submitted or not
else