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
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs