我应该使用Java Enum来获取特定年份的用户吗?

时间:2010-12-08 02:42:28

标签: java list jsf enums seam

我需要在使用Seam 2.2构建的Web应用程序中获取特定年份的用户,我想知道使用java Enum构建年份选项列表以在用户的​​前端呈现是否合理会选择其中一个,可能是在jsf h:selectOneMenu列表元素中。

那么你认为建议使用java Enum构建这种列表吗?

或者我应该使用简单的List来保存选项吗?

具体要求是建立当前和过去30年的列表,以便用户选择一个。

[]中

正如评论中所提到的,我使用List进入了一个简单的解决方案。按照我正在使用的代码,因为我正在使用Seam我刚刚构建了一个构建最近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> 

[]中

2 个答案:

答案 0 :(得分:4)

为什么要枚举一组连续的数字?

枚举的目的是为了效率和可读性而将内在非数字的东西(如状态或状态代码)转换为数字(尽管我总是发现可读性论证值得怀疑)。另一个常见且有效的用法是将一组像sql代码这样的数字组合变成一个更简单的数字序列。

答案 1 :(得分:2)

我只想创建一个简单的整数列表,从currentYear - 30到currentYear .. 迭代这几年并使用value = current iteration

创建选项列表