Browse Source

JSP Radiobutton/CheckboxesTag utilizes PropertyEditor/ConversionService for label rendering (SPR-7174)

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3331 50f2f4bb-b051-0410-bef5-90022cba6387
pull/1/head
Juergen Hoeller 16 years ago
parent
commit
8e49cfbc35
  1. 4
      org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/form/AbstractCheckedElementTag.java
  2. 10
      org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/form/AbstractDataBoundFormElementTag.java
  3. 6
      org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/form/AbstractMultiCheckedElementTag.java

4
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; package org.springframework.web.servlet.tags.form;
import java.beans.PropertyEditor;
import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspException;
/** /**
@ -45,8 +44,7 @@ public abstract class AbstractCheckedElementTag extends AbstractHtmlInputElement
* bound value. * bound value.
*/ */
protected void renderFromValue(Object item, Object value, TagWriter tagWriter) throws JspException { protected void renderFromValue(Object item, Object value, TagWriter tagWriter) throws JspException {
PropertyEditor editor = (value != null ? getBindStatus().findEditor(value.getClass()) : null); tagWriter.writeAttribute("value", convertToDisplayString(value));
tagWriter.writeAttribute("value", getDisplayString(value, editor));
if (isOptionSelected(value) || (value != item && isOptionSelected(item))) { if (isOptionSelected(value) || (value != item && isOptionSelected(item))) {
tagWriter.writeAttribute("checked", "checked"); tagWriter.writeAttribute("checked", "checked");
} }

10
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(); 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. * Disposes of the {@link BindStatus} instance.
*/ */

6
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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with 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 { 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; return SKIP_BODY;
@ -286,7 +286,7 @@ public abstract class AbstractMultiCheckedElementTag extends AbstractCheckedElem
tagWriter.endTag(); tagWriter.endTag();
tagWriter.startTag("label"); tagWriter.startTag("label");
tagWriter.writeAttribute("for", id); tagWriter.writeAttribute("for", id);
tagWriter.appendValue(label.toString()); tagWriter.appendValue(convertToDisplayString(label));
tagWriter.endTag(); tagWriter.endTag();
tagWriter.endTag(); tagWriter.endTag();
} }

Loading…
Cancel
Save