2015-04-23 2 views
0

Можно ли установить один или несколько переменных Freemarker в таком случае, как:FMPP: Как установить переменную Freemarker из сценария BeanShell

<#assign test=pp.loadData('eval', ' 
a="test1"; 
b="test2"; 
return "test";')> 

и имеющий доступ к а и Ь в сценарии Freemarker?

+0

Вы можете установить его в файле config.fmpp. Можете ли вы так поступить? – ratherblue

+0

Что я хочу сделать, так это разобрать строку в bsh и разложить ее на несколько переменных freemarker. – PPH

ответ

0

Я думаю, что это невозможно сделать без написания пользовательского DataLoader. Я говорю «угадай», потому что, может быть, я не знаю об BeanShell трюк. Самое близкое, что я мог получить, это использовать return this.namespace;, а затем ${test.getVariable('a')}. Это, конечно, слишком многословно.

Update: На самом деле, следующий ужас еще ближе:

<#assign test=pp.loadData('eval', ' 
    a="test1"; 
    b="test2"; 

    // This should be factored out into a common function somehow 
    ns = this.namespace; 
    vars = new HashMap(); 
    for (name : ns.getVariableNames()) { 
     vars.put(name, ns.getVariable(name)); 
    } 
    return vars; 
')> 

${test.a} 
+0

ОК, спасибо, мне это подходит. Это не для производственной среды. – PPH