2010-12-08 10 views
0

Seam 2.2を使用して構築されたWebアプリケーションで、特定の年のユーザを取得する必要があります.Java Enumを使用して、ユーザが選択したフロントエンドでレンダリングする年のリストを作成するのが妥当かどうか疑問に思っていました。おそらくjsf h:selectOneMenuリスト要素の中の1つを選んでください。特定の年にJava Enumを使用してユーザーを取得する必要がありますか?

このようなリストを作成するには、Java Enumを使用することをお勧めしますか?

オプションを保持するために単純なリストを使用する必要がありますか?

特定の要件は、ユーザーが1つを選択するために現在および過去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

+2

誰が毎年1月1日に列挙型を更新する予定ですか?君は?誰か?最終的な答えはそれに依存するかもしれません。 – BalusC

+0

ここにポイントがあります。これは自動でなければならないので、私はprobです。単純なリストのために行く必要があります。 –

答えて

4

なぜ数字の集合を列挙したいのですか?

enumの目的は、効率性と可読性のために、ステートコードやステータスコードのような数値を本質的に非数値にすることです(私は常に可読性の議論が疑わしいと感じましたが)。もう1つの一般的で有効な使い方は、SQLコードのように広く分散された数字のセットを、より簡単な一連の数字に変換することです。

2

私はちょうどcurrentYearから、整数の単純なリストを作成します - 30 to currentYear .. この年を繰り返し、value = current iterationでオプションリストを作成する

関連する問題