2012-03-27 84 views
4

工作在EL,我要訪問的值動態變量名在EL

${settings_123456.settingsMap[test].value} 

的問題是settings_123456是可變的。所以我將其存儲在${setting}變量,並試圖${setting.settingsMap[test].value},但它不工作

編輯:

Public class Setting { 
    Map<String, myClass> settingsMap; 
} 
Public class myClass { 
    private String myTest; 
} 

模型設置與Setting對象,我需要用我的jsp獲取myTest變量的值JSTL。另請注意,settingsMap的密鑰也是動態的,因此您可以在JSP代碼中看到test變量。

+0

可能會幫助,如果你張貼更多的代碼,所以我們可以看到你正在嘗試做什麼 – reevesy 2012-03-27 11:56:47

+0

@reevesy我已經更新了這個問題,讓我知道如果你還需要一些更多的信息 – user401445 2012-03-27 12:09:22

回答

6

您可以通過顯式指定範圍的地圖訪問。

${requestScope[settings_123456].settingsMap[test].value} 

使用${sessionScope}${applicationScope}代替時,它的會話或應用程序作用域。

+0

$ {requestScope [setting] .settingsMap [test] .value}工作,其中設置變量是設置爲所需的任何值(例如,在本例中爲settings_123456)。謝謝:) – user401445 2012-03-27 13:48:33

+1

不客氣。順便說一下,你一直在談論JSTL,而你的意思是EL。我編輯了你的問題。請閱讀我們JSTL wiki頁面的介紹性章節,以瞭解JSTL的真實含義:http://stackoverflow.com/tags/jstl/info – BalusC 2012-03-27 13:50:16

0

你必須要settingsMap屬性,即聲明一個setter和一個getter它:

Public class Setting { 
    Map<String, myClass> settingsMap; 

    public Map<String, myClass> getSettingsMap() { 
    return this.settingsMap; 
    } 

    public void setSettingsMap(Map<String, myClass> settingsMap) { 
    this.settingsMap = settingsMap; 
    } 

} 
+0

顯然他們在那裏,我剛剛提到屬性。所有屬性都有相應的getter和setter。 Infact我可以訪問映射值,如果我使用$ {settings_123456.settingsMap [test] .value},即如果我硬編碼變量名稱settings_123456 – user401445 2012-03-27 12:20:29