2010-04-16 58 views
1

我有一個動態的配置參數,我想這樣的:問題得到動態配置參數Grails的標籤庫

String srcProperty = "${attrs ['src']}.audio" + ((attrs['locale'])? "_${attrs['locale']}" : '') 

    assert srcProperty == "prompt.welcomeMessageOverrideGreeting.audio" 

在我的配置有:

prompt{ 
    welcomeMessageOverrideGreeting { 
     audio = "/en/someFileName.wav" 
     txt = "Text alternative for /en/someFileName.wav" 
     audio_es = "/es/promptFileName.wav" 
     txt_es = "Texto alternativo para /es/someFileName.wav" 
    } 
} 

雖然這工作得很好:

String audio = "${config.prompt.welcomeMessageOverrideGreeting.audio}" 

and: assert「$ {config.prompt.welcomeMessageOverrideGreeting.audio}」==「/ en/so meFileName.wav」

我不能得到這個工作:

String audio = config.getProperty("prompt.welcomeMessageOverrideGreeting.audio") 

回答

2

他們不是平放這樣,他們在分層存儲。 「config.prompt.welcomeMessageOverrideGreeting.audio」是從配置中獲得「提示」的簡寫,然後是「welcomeMessageOverrideGreeting」,然後是「audio」。如果你想用點符號只是扁平化配置:

String audio = config.flatten().getProperty("prompt.welcomeMessageOverrideGreeting.audio") 
0

在類路徑假設myconfig.groovy

prompt{ 
    welcomeMessageOverrideGreeting { 
     audio = "/en/someFileName.wav" 
     txt = "Text alternative for /en/someFileName.wav" 
     audio_es = "/es/promptFileName.wav" 
     txt_es = "Texto alternativo para /es/someFileName.wav" 
    } 
    } 

我們可以動態地構造自己的名字:

def myconfig = this.class.getResource("/myconfig.groovy") 
def config = new ConfigSlurper().parse(myconfig) 

def dynamic = "welcomeMessageOverrideGreeting" 
def dynamic2 = "audio" 
def locale = "es" 

assert config.prompt[dynamic].audio == "/en/someFileName.wav" 
assert config.prompt.welcomeMessageOverrideGreeting[dynamic2] == "/en/someFileName.wav" 
assert config.prompt.welcomeMessageOverrideGreeting["${dynamic2}_${locale}"] == "/es/promptFileName.wav" 
assert config.prompt[dynamic]["${dynamic2}_${locale}"] == "/es/promptFileName.wav"