freemarker - 我们可以从 javascript 函数中调用 ftl 宏吗
问题描述
<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 Uncaught ReferenceError: myFunction is not defined at HTMLInputElement.onkeyup ((index):60) onkeyup @ (index):60 – PCS 1 小时前
在 FreeMarker 中可以做这样的事情吗?
解决方案
从某种意义上说,你可以......但它并没有做你显然相信它会做的事情。首先,所有 FreeMarker 指令,如<@test/>
,都在服务器上解析,然后生成的输出在浏览器中运行。所以就浏览器所见,直接在里面function myFunction() { ... }
包含 HTML -s ,这是无效的 JavaScript。div
{ ... }
推荐阅读
- javascript - 为什么我的 django 异常处理不起作用
- javascript - 从 JavaScript 数组名称值对动态添加多个系列的 highcharts
- typescript - 将 Sharepoint 在线列表中的数据输出放入 HTML 表中
- firebase - Firestore - 如何建模和查询 2 个集合的关系 - IOT 用例
- javascript - 使用 React 渲染 HTMLAudioElement DOM 元素
- android - 当我在 Android Studio 中使用 if 时期望成员声明
- javascript - 在 Monaco Editor 中显示错误的快速修复
- javascript - ReactJs useState .map() 不是函数
- java - 如何将这种递归解决方案转换为分而治之?
- python - 获取字典中的值的总和