将JavaScript函数值分配给Freemarker变量

时间:2018-03-14 01:38:07

标签: javascript freemarker

我的Freemarker文件中有一个JavaScript函数,如下所示:

<script type="text/javascript">
  function myFunc(){
    var myString = "I like pizza";
    return myString;
  }
</script>

我正在尝试将myFtring的myString返回值分配给Freemarker中的myVar,如下所示:

<#assign myVar = myFunc()>

不幸的是,myVar的值是一个ampty String(“”)。 我做错了什么?

2 个答案:

答案 0 :(得分:1)

FreeMarker在Web服务器上运行,而JavaScript稍后在浏览器中运行。所以你应该最终得到一个错误,其中FreeMarker抱怨没有myFunc之类的东西。不知道你如何在myVar中找到一个空字符串(也许还有一些与之相关的疏忽),但无论如何,你想做的事情都行不通。

答案 1 :(得分:0)

您正尝试从 myFunc()返回 myString 。你在哪里定义了 myString ? 它是在 myFunc()的父范围内吗?如果不是,有两种可能的情况!

  • 场景1:非严格模式 - 创建一个新的 myString 变量并将其返回,这可能会导致您出现空字符串问题!
  • 场景2:严格模式 - 变量 myString 将作为未定义返回,这不是您的情况。

可能的解决方案 - 使用父作用域中的某些值或 myFunc()

的当前作用域实例化变量

<强>被修改

我恐怕会在 服务器 中编译 freemaker模板。替代解决方案是在脚本标记中包含整个freemaker调用站点,以便在编译到脚本客户端浏览器后在该模板中需要JavaScript时,它将基于客户端实例工作。