2010-08-13 15 views
8

Tipo es la propiedad enum en el objeto.¿Cómo vincular ENUM al botón de radio?

jsp:

<form:radiobutton path="type" value="Male" /> 

java:

public enum TestType 
{ 
    Male, Female; 
} 

y ha obtenido un error

No se puede convertir el valor 'masculino' de tipo 'java.lang.String' al tipo 'java .lang.Enum '; razón = 'java.lang.Enum no es un tipo de enumeración'

+0

Mi error. El tipo era _Enum type_ ¡Cambio a _TestType type_ y está bien! – Alexander

Respuesta

0

Tal vez, la propiedad type del objeto de comando se decalred como Enum en lugar de TestType?

4

Do de la siguiente manera

public enum TestType { 

    MAN("Man"), 
    FEMALE("Female"); 

    private String description; 

    private TestType(String description) { 
     this.description = description; 
    } 

    public String getValue() { 
     return name(); 
    } 

    public void setValue(String value) {} 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

} 

y registrar una carpeta de encargo de la siguiente manera

dataBinder.registerCustomEditor(TestType.class, new PropertyEditorSupport() { 
     @Override 
     public void setAsText(String value) throws IllegalArgumentException { 
      if(StringUtils.isBlank(value)) 
       return; 

      setValue(TestType.valueOf(value)); 
     } 

     @Override 
     public String getAsText() { 
      if(getValue() == null) 
       return ""; 

      return ((TestType) getValue()).name(); 
     } 
    }); 

Entonces

<form:radiobuttons path="type" items="${testTypeList}" itemLabel="description"/> 

a configurar su TestType de la siguiente manera

model.addAttribute(TestType.values()); 
+1

esta solución funcionó para mí de una sola vez ... solo cambio para la primavera 3.0, elimine la propiedad itemLabel de harshit

+0

@harshit pero cómo se especifica la etiqueta del artículo, el método anterior no funciona para mí ... ? – NimChimpsky

7

Se puede encontrar una solución más simple en spring forum, sin la necesidad de ningún enlace personalizado.

+1

esto debería ser aceptado en su lugar. – arthur

Cuestiones relacionadas