2012-03-27 103 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