Update of 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/typehandler
In directory james.mmbase.org:/tmp/cvs-serv29917/typehandler

Modified Files:
        EnumHandler.java 
Log Message:
  MMB-1763


See also: 
http://cvs.mmbase.org/viewcvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/typehandler
See also: http://www.mmbase.org/jira/browse/MMB-1763


Index: EnumHandler.java
===================================================================
RCS file: 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/typehandler/EnumHandler.java,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -b -r1.47 -r1.48
--- EnumHandler.java    29 Dec 2008 16:41:31 -0000      1.47
+++ EnumHandler.java    30 Dec 2008 12:41:12 -0000      1.48
@@ -29,7 +29,7 @@
  *
  * @author Michiel Meeuwissen
  * @since  MMBase-1.6
- * @version $Id: EnumHandler.java,v 1.47 2008/12/29 16:41:31 michiel Exp $
+ * @version $Id: EnumHandler.java,v 1.48 2008/12/30 12:41:12 michiel Exp $
  */
 
 public class EnumHandler extends AbstractTypeHandler implements TypeHandler {
@@ -139,6 +139,7 @@
         return value;
     }
 
+
     public String htmlInput(Node node, Field field, boolean search) throws 
JspTagException {
         StringBuilder buffer = new StringBuilder();
         String fieldName = field.getName();
@@ -153,7 +154,7 @@
         if (log.isDebugEnabled()) {
             log.debug("using value " + (value == null ? "NULL" : 
value.getClass().getName() + " " + value));
         }
-        if (! field.getDataType().isRequired()) {
+        if (! field.getDataType().isRequired() && ! multiple) {
             buffer.append("<option value=\"\" ");
             if (value == null) buffer.append("selected=\"selected\" ");
             buffer.append(">--</option>");
@@ -162,7 +163,12 @@
             iterator = getIterator(node, field);
         }
 
-        String valueString = Casting.toString(value);
+        List<String> valueString = multiple ? new ArrayList<String>() : 
Collections.singletonList(Casting.toString(value));
+        if (multiple) {
+            for (Object v : Casting.toList(value)) {
+                valueString.add(Casting.toString(v));
+            }
+        }
         while(iterator != null && iterator.hasNext()) {
             Map.Entry entry = (Map.Entry) iterator.next();
             Object key = entry.getKey();
@@ -174,7 +180,7 @@
             buffer.append("<option value=\"");
             buffer.append(XML.transform(keyString));
             buffer.append("\"");
-            if (keyString.equals(valueString)) {
+            if (valueString.contains(keyString)) {
                 buffer.append(" selected=\"selected\"");
             } else if (search) {
                 String searchs = 
Casting.toString(tag.getContextProvider().getContextContainer().find(tag.getPageContext(),
 prefix(field.getName())));
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to