2011-09-29 36 views
5

Me enfrenta un problema al completar una lista desplegable de valores de clase Enum. Mi código de clase de enumeración es:
Valores enum como lista desplegable

package abc.xyz.constants; 

public enum StateConstantsEnum 
{ 
      NEWYORK("NY"), 
      FLORIDA("FL"), 
      CALIFORNIA("CA"), 

    private String fullState; 

    private StateConstantsEnum(String s) 
    { 
     fullState = s; 
    } 

    public String getState() 
    { 
     return fullState; 
    } 
} 

Quiero poblar la lista desplegable con NEWYORK, Florida y California. Estoy creando y añadiendo la lista para el modelo de Primavera de este modo:

List<StateConstantsEnum> stateList = new ArrayList<StateConstantsEnum>(Arrays.asList(StateConstantsEnum.values())); 

model.addAttribute("stateList", stateList); 

Entonces estoy tratando de llenar el menú desplegable en JSP usando:

<select name="${status.expression}" name="stateLst" id="stateLst"> 
    <option value=""></option> 
     <c:forEach items="${stateList}" var="option"> 
       <option value="${option}"> 
        <c:out value="${option.fullState}"></c:out> 
       </option> 
     </c:forEach> 
</select> 

Pero me estoy haciendo una excepción "Excepción created: javax.el.PropertyNotFoundException: La clase 'abc.xyz.constants.StateConstantsEnum' no tiene la propiedad 'fullState'. "

¿Cómo puedo solucionar este problema? Ayuda muy apreciada

Respuesta

7

fullState es privada, getState() es el descriptor de acceso.

<c:out value="${option.state}"></c:out> 

O cambie el nombre de su captador a getFullstate().

+0

Creo que '' sería correcto. – kingori

+0

Vaya ... Me perdí una pequeña pieza. Gracias. Un problema más, esto es imprimir NY, FL, CA, no NEW YORK, FLORIDA y CALIFORNIA. ¿Alguna idea? – BambooBlunder

+2

Simplemente usa '$ {option}' luego. En realidad, el nombre de "fullstate" es engañoso. Es al revés. Tiene una abreviatura de estado. – BalusC

0

en su JSP se puede utilizar una así:

<form:select path="*"> 
    <form:options items="${stateList}" itemLabel="fullState" /> 
</form:select> 

, se extraerán todos los elementos de su liste (stateList) y si no especifica un itemLabel y ItemValue, que va a tomar sus valores enumeraciones por supuesto, debe configurar su getter para getFullState y declarar las etiquetas springmvc en su página