Перечисление значений в виде раскрывающегося списка

Я столкнулся с проблемой заполнения раскрывающегося списка из значений класса 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'."

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


person BambooBlunder    schedule 29.09.2011    source источник


Ответы (2)


fullState — частный, getState() — аксессор.

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

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

person Joe    schedule 29.09.2011
comment
Я думаю, что <c:out value="${option.state}"></c:out> было бы правильно. - person kingori; 29.09.2011
comment
Ой.. Я пропустил маленький кусочек. Спасибо. Еще одна проблема, это печать NY, FL, CA, а не NEWYORK, FLORIDA и CALIFORNIA. Есть идеи? - person BambooBlunder; 29.09.2011
comment
Просто используйте ${option} тогда. На самом деле полное название вводит в заблуждение. Все наоборот. Он содержит аббревиатуру штата. - person BalusC; 29.09.2011
comment
Спасибо за помощь и предложение BalusC. Я изменю это. - person BambooBlunder; 29.09.2011

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

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

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

person Slifer    schedule 13.06.2013