Перечислите значения как выпадающий список - PullRequest
6 голосов
/ 29 сентября 2011

Я столкнулся с проблемой заполнения выпадающего списка из значений класса Enum. Мой код класса enum:

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;
    }
}

Я хочу заполнить выпадающий список NEWYORK, FLORIDA и CALIFORNIA. Я создаю и добавляю список в модель Spring следующим образом:

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

model.addAttribute("stateList", stateList);

Затем я пытаюсь заполнить раскрывающийся список в JSP, используя:

<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>

Но я получаю исключение "Исключение создано: javax.el.PropertyNotFoundException: Класс 'abc.xyz.constants.StateConstantsEnum' не имеет свойства 'fullState'. "

Как мне исправить эту проблему? Помощь очень ценится

Ответы [ 2 ]

7 голосов
/ 29 сентября 2011

fullState является приватным, getState() является аксессором.

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

Или переименуйте ваш геттер в getFullstate().

0 голосов
/ 13 июня 2013

в вашем JSP вы можете использовать вот так:

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

он извлечет все элементы в вашем списке (stateList), и если вы не укажете itemLabel и itemValue, он примет значения перечислений конечно, вы должны установить свой getter на getFullState и объявить теги springmvc на своей странице

...