diff --git a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/form/AbstractCheckedElementTag.java b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/form/AbstractCheckedElementTag.java index b62ed81ed8b..5eac86407fb 100644 --- a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/form/AbstractCheckedElementTag.java +++ b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/form/AbstractCheckedElementTag.java @@ -16,7 +16,6 @@ package org.springframework.web.servlet.tags.form; -import java.beans.PropertyEditor; import javax.servlet.jsp.JspException; /** @@ -45,8 +44,7 @@ public abstract class AbstractCheckedElementTag extends AbstractHtmlInputElement * bound value. */ protected void renderFromValue(Object item, Object value, TagWriter tagWriter) throws JspException { - PropertyEditor editor = (value != null ? getBindStatus().findEditor(value.getClass()) : null); - tagWriter.writeAttribute("value", getDisplayString(value, editor)); + tagWriter.writeAttribute("value", convertToDisplayString(value)); if (isOptionSelected(value) || (value != item && isOptionSelected(item))) { tagWriter.writeAttribute("checked", "checked"); } diff --git a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/form/AbstractDataBoundFormElementTag.java b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/form/AbstractDataBoundFormElementTag.java index aaf39dc923e..84645cb24d0 100644 --- a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/form/AbstractDataBoundFormElementTag.java +++ b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/form/AbstractDataBoundFormElementTag.java @@ -218,6 +218,16 @@ public abstract class AbstractDataBoundFormElementTag extends AbstractFormTag im return getPropertyEditor(); } + /** + * Get a display String for the given value, converted by a PropertyEditor + * that the BindStatus may have registered for the value's Class. + */ + protected String convertToDisplayString(Object value) throws JspException { + PropertyEditor editor = (value != null ? getBindStatus().findEditor(value.getClass()) : null); + return getDisplayString(value, editor); + } + + /** * Disposes of the {@link BindStatus} instance. */ diff --git a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/form/AbstractMultiCheckedElementTag.java b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/form/AbstractMultiCheckedElementTag.java index 85b629556e6..5cb997346bf 100644 --- a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/form/AbstractMultiCheckedElementTag.java +++ b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/form/AbstractMultiCheckedElementTag.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2009 the original author or authors. + * Copyright 2002-2010 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -228,7 +228,7 @@ public abstract class AbstractMultiCheckedElementTag extends AbstractCheckedElem } } else { - throw new IllegalArgumentException("Attribute 'items' must be a Collection, an Array or a Map"); + throw new IllegalArgumentException("Attribute 'items' must be an array, a Collection or a Map"); } return SKIP_BODY; @@ -286,7 +286,7 @@ public abstract class AbstractMultiCheckedElementTag extends AbstractCheckedElem tagWriter.endTag(); tagWriter.startTag("label"); tagWriter.writeAttribute("for", id); - tagWriter.appendValue(label.toString()); + tagWriter.appendValue(convertToDisplayString(label)); tagWriter.endTag(); tagWriter.endTag(); }