2012-01-29 48 views
0

好了,所以基本上我有一個枚舉:訪問字符串集合在JSP(適用範圍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訪問此集合菜單選項。我有以下四個選項,並想知道哪一個我應該使用以及如何...

  1. 放置在一個ServletContext屬性的收集和獲取它的JSP通過調用${application.StringDisplayCollection}

  2. 每當我需要它時將一個集合的不變副本取出並存儲在會話中,然後通過會話範圍在jsp上訪問它。

  3. 將集合轉換爲JSON並在頁面加載時隨時通過ajax獲取。

  4. 我沒有想到的是一些很酷的方式會更好和/或更簡單...

謝謝你,讓我知道如果你需要任何澄清。

回答

0

建議:將集合放在ServletContext屬性中,並通過調用$ {application.StringDisplayCollection}在jsp上訪問它。

不在會話範圍內,因爲這不會在每個用戶/會話基礎上更改。

+0

好的很酷。除了不可變性之外,您是否有任何實施建議?我是否應該有一個擁有所有集合的類,例如$ {application.DisplayClass.StringDisplayColl},或者只需調用$ {application.EnumName.StringDisplayColl}?謝謝。 – oberger 2012-01-29 19:27:04

0

用一個String輸入(類名)和一個Collection結果編寫一個靜態方法,然後在.tld文件中將你的靜態方法定義爲EL函數。所以你可以有這樣的:$ {fx:enumItems('EnumFullyQuallifiedClassName')}