【问题标题】:FMPP: How to set a Freemarker variable from a BeanShell scriptFMPP:如何从 BeanShell 脚本设置 Freemarker 变量
【发布时间】:2015-04-23 15:56:03
【问题描述】:

是否可以在以下情况下设置一个或多个 freemarker 变量:

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

并且可以访问 freemarker 脚本中的 a 和 b 吗?

【问题讨论】:

  • 可以在config.fmpp文件中设置。你能那样做吗?
  • 我要做的是在bsh中解析一个字符串,然后分解成几个freemarker变量。

标签: freemarker beanshell fmpp


【解决方案1】:

我想如果不编写自定义 DataLoader 就无法完成。我说“猜测”是因为我可能不知道 BeanShell 把戏。我能得到的最接近的是使用return this.namespace;,然后是${test.getVariable('a')}。这当然太冗长了。

更新: 其实,下面的恐怖更接近:

<#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}

【讨论】:

  • 好的,谢谢,它适合我。它不适用于生产环境。
猜你喜欢
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多