我们可以从javascript函数调用ftl宏吗

时间:2018-08-18 18:54:06

标签: freemarker

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title> Java, Spring Boot, FreeMarker</title>
    <link href="/css/main.css" rel="stylesheet">
</head>
<script>
function myFunction() {
        <@test/>
}
</script>
<body>
    <h2>Java, Spring Boot, FreeMarker</h2>
     <form action="/search" method="post">
   Search : <input type="text" name="firstName" onkeyup="myFunction()" id = "fname"> 
   <input type="submit" value="Submit">
   </form>
        <div style="background-color:lightblue">
          <#macro test>
            <#list empList as emp>
            <div id="emp-data">
            <ul>
                <li>${emp}</li>
            </ul>
            </#list>
            </div>
        </#macro>
    <script src="/js/main.js"></script>
    </div>

</body>

运行此代码时,我在浏览器控制台上遇到一些错误:

  

(index):60未被捕获的ReferenceError:未在HTMLInputElement.onkeyup((index):60)onkeyup @(index):60 – PCS 1小时前定义myFunction

在FreeMarker中是否可以做类似的事情?

1 个答案:

答案 0 :(得分:1)

从某种意义上讲,您可以...但是它并没有按照您认为的那样做。首先,在服务器上解析所有的FreeMarker指令,例如<@test/>,然后在浏览器中运行结果输出。因此,就浏览器而言,function myFunction() { ... }直接在div内部包含HTML { ... }-s,这是无效的JavaScript。