2013-05-29 95 views
0

我想将解释变量的结果赋值给另一个变量。Freemarker:将解释变量赋值给其他变量

Freemarker提供了内置的?interpret来解释一个变量持有一个ftl表达式。见http://freemarker.sourceforge.net/docs/ref_builtins_expert.html#ref_builtin_interpret

如果我做

[#if var1?has_content && var1?starts_with(r"${")] 
    [#assign interpretedValue = var1?interpret!""] 
    [@interpretedValue/] 
[/#if] 

[@interpretedValue/]将输出解释值。但是,我想将解释值的值赋给一个变量(以便在我的代码中执行一些操作,例如?has_content)。我试过[#assign varInterpretedValue = @interpretedValue]但这不起作用。

这可能吗?

回答

2

是的,是这样的:

[#assign capturedOutput][@(var1!'')?interpret /][/#assign] 
${capturedOutput} [#-- Attention! Put this into #noescape if you are inside #escape! --] 

注意,!'' SUFF具有对?interpret之前,否则它不会做任何事情(因为?interpret结果总是非空)。

+0

您的解决方案几乎是正确的,并将我放在正确的道路上(请参阅我的答案中的解决方案)。尝试此解决方案时,出现以下错误:var1!''?interpret不是用户定义的指令。这是一个freemarker.template.SimpleScalar –

+1

正确...应该是'(var1!'')?interpret'。我已经更新了我的答案。 – ddekany