我应该使用Java枚举获取特定年份的用户吗?
我需要在使用Seam 2.2构建的web应用程序中获取特定年份的用户,我想知道使用java枚举来构建要在前端呈现的年份选择列表是否合理,用户可以在前端选择其中一个,可能是在jsf h:selectOneMenu列表元素中
那么,您认为建议使用java枚举来构建此类列表吗
或者我应该使用一个简单的列表来保存选项
具体要求是建立一个当前和过去30年的列表,以便用户选择一个
[]s
正如我在评论中提到的,我使用列表找到了一个简单的解决方案。遵循我使用的代码,因为我使用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>
[]s
# 1 楼答案
你为什么要列举一组相等的数字
enum的目的是为了提高效率和可读性,将一些本质上非数字的东西(如状态码或状态码)转换为数字(尽管我一直认为可读性参数是可疑的)。另一个常见且有效的用途是将一组分散的数字(如sql代码)转换为一个更简单的数字序列
# 2 楼答案
我只需要创建一个简单的整数列表,从currentYear-30到currentYear。。 今年迭代,创建选项列表,值=当前迭代