You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mb...@apache.org on 2005/09/08 00:06:41 UTC
svn commit: r279434 - in /myfaces/api/trunk/src/java/javax/faces/component:
UISelectMany.java UISelectOne.java _SelectItemsUtil.java
Author: mbr
Date: Wed Sep 7 15:06:36 2005
New Revision: 279434
URL: http://svn.apache.org/viewcvs?rev=279434&view=rev
Log:
validation of submitted values fixed (caused problems if values where converted)
Modified:
myfaces/api/trunk/src/java/javax/faces/component/UISelectMany.java
myfaces/api/trunk/src/java/javax/faces/component/UISelectOne.java
myfaces/api/trunk/src/java/javax/faces/component/_SelectItemsUtil.java
Modified: myfaces/api/trunk/src/java/javax/faces/component/UISelectMany.java
URL: http://svn.apache.org/viewcvs/myfaces/api/trunk/src/java/javax/faces/component/UISelectMany.java?rev=279434&r1=279433&r2=279434&view=diff
==============================================================================
--- myfaces/api/trunk/src/java/javax/faces/component/UISelectMany.java (original)
+++ myfaces/api/trunk/src/java/javax/faces/component/UISelectMany.java Wed Sep 7 15:06:36 2005
@@ -22,10 +22,10 @@
import java.util.List;
import javax.faces.application.FacesMessage;
+import javax.faces.component._SelectItemsUtil._ValueConverter;
import javax.faces.context.FacesContext;
import javax.faces.convert.ConverterException;
import javax.faces.el.ValueBinding;
-import javax.faces.model.SelectItem;
import javax.faces.render.Renderer;
/**
@@ -256,6 +256,19 @@
setValid(false);
return;
}
+
+ _ValueConverter converter = new _ValueConverter()
+ {
+ public Object getConvertedValue(FacesContext context, String value)
+ {
+ Object convertedValue = UISelectMany.this.getConvertedValue(context, new String[] {value});
+ if(convertedValue != null)
+ {
+ return ((Object[])convertedValue)[0];
+ }
+ return null;
+ }
+ };
if ( convertedValue instanceof Object[] ){
Object[] values = (Object[]) convertedValue;
@@ -269,7 +282,7 @@
for (int i = 0, size = values.length; i < size; i++)
{
if (!_SelectItemsUtil.matchValue(context, values[i],
- items.iterator()))
+ items.iterator(), converter))
{
_MessageUtils.addErrorMessage(context, this,
INVALID_MESSAGE_ID,
@@ -290,7 +303,7 @@
for (Iterator i = values.iterator(); i.hasNext();)
{
if (!_SelectItemsUtil.matchValue(context, i.next(),
- items.iterator()))
+ items.iterator(), converter))
{
_MessageUtils.addErrorMessage(context, this,
INVALID_MESSAGE_ID,
Modified: myfaces/api/trunk/src/java/javax/faces/component/UISelectOne.java
URL: http://svn.apache.org/viewcvs/myfaces/api/trunk/src/java/javax/faces/component/UISelectOne.java?rev=279434&r1=279433&r2=279434&view=diff
==============================================================================
--- myfaces/api/trunk/src/java/javax/faces/component/UISelectOne.java (original)
+++ myfaces/api/trunk/src/java/javax/faces/component/UISelectOne.java Wed Sep 7 15:06:36 2005
@@ -15,6 +15,7 @@
*/
package javax.faces.component;
+import javax.faces.component._SelectItemsUtil._ValueConverter;
import javax.faces.context.FacesContext;
/**
@@ -39,8 +40,16 @@
return;
}
+ _ValueConverter converter = new _ValueConverter()
+ {
+ public Object getConvertedValue(FacesContext context, String value)
+ {
+ return UISelectOne.this.getConvertedValue(context, value);
+ }
+ };
+
// selected value must match to one of the available options
- if (!_SelectItemsUtil.matchValue(context, value, new _SelectItemsIterator(this)))
+ if (!_SelectItemsUtil.matchValue(context, value, new _SelectItemsIterator(this), converter))
{
_MessageUtils.addErrorMessage(context, this, INVALID_MESSAGE_ID,
new Object[] {getId()});
Modified: myfaces/api/trunk/src/java/javax/faces/component/_SelectItemsUtil.java
URL: http://svn.apache.org/viewcvs/myfaces/api/trunk/src/java/javax/faces/component/_SelectItemsUtil.java?rev=279434&r1=279433&r2=279434&view=diff
==============================================================================
--- myfaces/api/trunk/src/java/javax/faces/component/_SelectItemsUtil.java (original)
+++ myfaces/api/trunk/src/java/javax/faces/component/_SelectItemsUtil.java Wed Sep 7 15:06:36 2005
@@ -28,19 +28,30 @@
*/
class _SelectItemsUtil
{
+ public static interface _ValueConverter
+ {
+ Object getConvertedValue(FacesContext context, String value);
+ }
+
/**
* @param context the faces context
* @param value the value to check
+ * @param converter
* @param iterator contains instances of SelectItem
* @return if the value of a selectitem is equal to the given value
*/
public static boolean matchValue(FacesContext context, Object value,
- Iterator selectItemsIter)
+ Iterator selectItemsIter, _ValueConverter converter)
{
while (selectItemsIter.hasNext())
{
SelectItem item = (SelectItem) selectItemsIter.next();
- if (value.equals(item.getValue()))
+ Object itemValue = item.getValue();
+ if(converter != null && itemValue instanceof String)
+ {
+ itemValue = converter.getConvertedValue(context, (String)itemValue);
+ }
+ if (value.equals(itemValue))
{
return true;
}
@@ -51,7 +62,7 @@
if (selectItems != null
&& selectItems.length > 0
&& matchValue(context, value, Arrays.asList(
- selectItems).iterator()))
+ selectItems).iterator(), converter))
{
return true;
}