2012-01-29 10 views
0

わかりましたので、基本的に私は、列挙型を持っている:へのアクセス文字列コレクション(セッションスコープVSアプリケーションスコープ)

public enum A { 

    A, B, C, D; 

    public static final Collection<String> displayColl = createDisplay(); 
    private static Collection<String> createDisplay() { 
     // Convert enum to acceptable String display magic here... 
     return ImmutableCollection.copyOf(string collection); 
    } 
} 

私はメニューオプションとしてJSPにこのコレクションにアクセスしたいと思います。私は、次の4つのオプションがあり、そして${application.StringDisplayCollection}を呼び出すことによって

  1. 置きます...これは、私が使うべき1と方法を知っているServletContext属性でコレクションとJSPのアクセス、それをしたいと思います。

  2. 私が必要とする度にコレクションの不変なコピーを取り除き、それをセッションに保存してから、セッションスコープを通してjspにアクセスしてください。

  3. コレクションをJSONに変換し、必要に応じてページが読み込まれるたびにそれを取得します。

  4. 私はそのことを考えていないいくつかのクールな方法が良いおよび/または単純だろう...

ありがとう、あなたが任意の明確化が必要な場合は私に知らせてください。

答えて

0

提案: ServletContext属性にコレクションを置き、$ {application.StringDisplayCollection}を呼び出してjspでアクセスします。

これはセッション単位ではありません。これはユーザー/セッション単位で変更されないためです。

+0

大丈夫です。不変性以外にも、実装の提案はありますか? $ {application.DisplayClass.StringDisplayColl}などのすべてのコレクションを保持するクラスを1つ持つか、$ {application.EnumName.StringDisplayColl}をコールするだけですか?ありがとう。 – oberger

0

String入力(クラス名)とCollectionの結果を持つ静的メソッドを記述し、そのstaticメソッドをEL関数として.tldファイルに定義します。したがって、あなたは次のようなものを持つことができます:$ {fx:enumItems( 'EnumFullyQuallifiedClassName')}

関連する問題