我需要在使用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>
[]中
答案 0 :(得分:4)
为什么要枚举一组连续的数字?
枚举的目的是为了效率和可读性而将内在非数字的东西(如状态或状态代码)转换为数字(尽管我总是发现可读性论证值得怀疑)。另一个常见且有效的用法是将一组像sql代码这样的数字组合变成一个更简单的数字序列。
答案 1 :(得分:2)
我只想创建一个简单的整数列表,从currentYear - 30到currentYear .. 迭代这几年并使用value = current iteration
创建选项列表