Author: michiel
Date: 2010-03-09 18:25:27 +0100 (Tue, 09 Mar 2010)
New Revision: 41315

Modified:
   
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/typehandler/BooleanHandler.java
Log:
More   MMB-1928

Modified: 
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/typehandler/BooleanHandler.java
===================================================================
--- 
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/typehandler/BooleanHandler.java
 2010-03-09 17:24:52 UTC (rev 41314)
+++ 
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/typehandler/BooleanHandler.java
 2010-03-09 17:25:27 UTC (rev 41315)
@@ -45,16 +45,24 @@
             return eh.htmlInput(node, field, search);
         } else {
             StringBuilder buffer = new StringBuilder();
-            buffer.append("<input type=\"checkbox\" class=\"");
+            buffeR.append("<input type=\"checkbox\" class=\"");
             buffer.append(getClasses(node, field));
             buffer.append("\" 
name=\"").append(prefix(field.getName())).append("\" ");
             
buffer.append("id=\"").append(prefixID(field.getName())).append("\" ");
             Object value = getFieldValue(node, field, ! search);
-            log.debug("Found " + value);
-            if (value.equals(Boolean.TRUE)) {
-                buffer.append("checked=\"checked\"");
+            if (value == null) {
+                log.debug("Found null");
+            } else {
+                log.debug("Found " + value.getClass() + " " + value);
             }
+            if (Boolean.TRUE.equals(org.mmbase.util.Casting.toBoolean(value))) 
{
+              buffer.append("checked=\"checked\"");
+            }
             buffer.append(" />");
+
+            // The following is needed because for a checkbox itself there is 
no distinction between 'not posted at all', and 'false'.
+            String hidden = prefix(field.getName()) + "_check";
+            buffer.append("<input type=\"hidden\" 
name=\"").append(hidden).append("\" value=\"yes\" />");
             return buffer.toString();
         }
 
@@ -100,13 +108,18 @@
          return  super.cast(value, node, field);
     }
 
+
     @Override
     public Object getFieldValue(Node node, Field field) throws JspTagException 
{
         Object v = super.getFieldValue(node, field);
         EnumHandler eh = getEnumHandler(null, field);
         if (eh == null) {
             // check-boxes.
+          boolean posted = 
"yes".equals(tag.getContextProvider().getContextContainer().find(tag.getPageContext(),
 prefix(field.getName()) + "_check"));
+          if (posted) {
             v = "on".equals(v);
+          }
+
         }
         return v;
     }

_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to