Должен ли я использовать Java Enum для получения пользователя в течение определенного года? - PullRequest
0 голосов
/ 08 декабря 2010

Мне нужно выбрать пользователя на определенный год в веб-приложении, построенном с использованием Seam 2.2, и мне было интересно, будет ли разумно использовать java Enum для построения списка вариантов года для рендеринга в интерфейсе пользователя, где пользователь выбрал бы один из них, вероятно, в элементе списка jsf h: selectOneMenu.

Как вы думаете, рекомендуется ли использовать Java Enum для создания такого рода списка?

Или я должен использовать простой список для хранения параметров?

Особое требование состоит в том, чтобы составить список текущих и прошедших 30 лет, чтобы пользователь мог выбрать один.

[] s

Как уже упоминалось в комментариях, я пошел к простому решению, используя List. Следуя коду, который я использую для этого, так как я использую Seam, я только что создал Factory, которая создает список за последние 50 лет, а затем в xhtml я ссылаюсь на это и показываю в комбинированном списке конечному пользователю, который выбирает его. *

Заводской код:

    @Factory("listaUltimos50Anos")
    public List<Integer> listaUltimos50Anos()
    {
        ArrayList<Integer> ultimos50Anos = new ArrayList<Integer>();
        GregorianCalendar hoje = new GregorianCalendar();
        hoje.setTime(new java.util.Date());
        int anoAtual = hoje.get(Calendar.YEAR);
        for(int i = 0; i <= 50; i++)
        {
            ultimos50Anos.add(anoAtual);
            anoAtual -= 1;
        }
        return ultimos50Anos;
    }

а чем в xhtml я ссылаюсь на эту фабрику:

<s:decorate id="dataField" template="../layout/edit.xhtml">
    <ui:define name="label">Ano</ui:define>
    <h:selectOneMenu id="ano" value="#{carroHome.instance.ano}" required="true">
        <s:selectItems var="anos" value="#{listaUltimos50Anos}" label="#{anos}" />
    </h:selectOneMenu>
</s:decorate> 

[] s

Ответы [ 2 ]

4 голосов
/ 08 декабря 2010

Почему вы хотите перечислить набор последовательных чисел?

Целью enum является превращение чего-то по сути не числового, такого как код состояния или состояния, в число для эффективности и читабельности (хотя я всегда считал аргумент читаемости сомнительным). Другое распространенное и правильное использование - это превращение нечеткого набора чисел, таких как коды SQL, в более простую последовательность чисел.

2 голосов
/ 08 декабря 2010

Я бы просто создал простой список целых чисел, от currentYear - 30 до currentYear .. итерируйте эти годы и создайте список опций со значением = текущая итерация

...