Как использовать Java ENUM с - PullRequest
0 голосов
/ 29 марта 2012

Я пытаюсь использовать следующий ENUM внутри моего файла редактирования содержимого .jsp с помощью тега <form:select> и не могу найти пример того, как это сделать.

public class Content implements Serializable {
    public enum Paperless { 
        NONE(null, ""),
        EDELIVERY_RECOMMENDED("EDELIVERY_RECOMMENDED", "Recommend eDelivery"),
        EDELIVERY_REQUIRED("EDELIVERY_REQUIRED", "Require eDelivery"),
        EDELIVERY_REQUIRED_JUSTIFICATION("EDELIVERY_REQUIRED_JUSTIFICATION", "Require eDelivery w/out justification");

        private String name;
        private String description;
        Paperless(String name, String description) {
            this.name = name;
            this.description = description;
        }
        public String getName() {
            return this.name;
        }
        public String getDescription() {
            return this.description;
        }
    }
....

Приведенный выше объект содержимого передается в мой файл .jsp как ${content}.

Я пытаюсь сделать

<form:select path="content.Paperless">
    <form:options items="${content.Paperless}" itemLabel="name"/>
</form:select>

Выдает исключение.... org.springframework.beans.NotReadablePropertyException: Invalid property 'content' of bean class [com.fettergroup.cmt.model.Content]: Bean property 'content' is not readable or has an invalid getter method: Does the return type of the getter match the parameter

Я что-то неправильно понимаю по этому поводу, но не могу точно определить, какой ...

Ответы [ 3 ]

6 голосов
/ 29 марта 2012

Ваш <form:select> путь ссылается на метод получения с именем getContent (), который возвращает объект, имеющий метод getPaperless ().Возможно, вы хотели использовать просто getPaperless () в своем классе модели действия.

Затем, чтобы показать список значений перечисления, вам просто нужно объявить пустой тег параметров:

<form:select path="paperless">
   <form:options/>
</form:select>
1 голос
/ 18 ноября 2016

Вы должны преобразовать enum в коллекцию и поместить его в модель.затем используйте его в форме: выберите как любой список.Пример кода:

в вашем контроллере

 model.addAttribute ("paperless", Arrays.asList(Paperless .values()));

в вашем jsp

<form:select ... items="${paperless}" itemValue="name" itemLabel="description"/>
0 голосов
/ 29 марта 2012

Поверьте, если вы передадите Paperless.values ​​() как объект на свою страницу jsp, а затем разыменуете имя и описание, вы получите желаемые результаты.

...