Freemarker 模板错误
Posted
技术标签:
【中文标题】Freemarker 模板错误【英文标题】:Freemarker Template Error 【发布时间】:2017-09-15 05:52:28 【问题描述】:当我点击登录按钮并通过数据库成功登录后重定向到 hello.ftl 页面。但是ftl页面显示这个错误
FreeMarker 模板错误(调试模式;在生产中使用 RETHROW!): 以下已评估为 null 或缺失:==> var [in template “hello.ftl”在第 8 行第 32 列] ---- 提示:如果表达式失败 已知在法律上指的是有时为空的东西或 缺少,或者指定一个默认值,如 myOptionalVar!myDefault, 或使用 when-presentwhen-missing。 (这些 只覆盖表达式的最后一步;覆盖整个 表达式,使用括号: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL 堆栈跟踪(“~”表示 嵌套相关):-失败于:#macro url relativeUrl extra... [in 宏“url”中的模板“spring.ftl”在第 89 行,第 1 列] - 已到达 通过:@spring.url "/logout", var = "logoutUrl" [在模板中 第 8 行第 9 列的“hello.ftl”] ---- Java 堆栈跟踪(用于 程序员):---- freemarker.core.InvalidReferenceException:[... 异常消息已打印;见上面...]在 freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134) 在 freemarker.core.EvalUtil.compare(EvalUtil.java:196) 在 freemarker.core.EvalUtil.compare(EvalUtil.java:113) 在 freemarker.core.ComparisonExpression.evalToBoolean(ComparisonExpression.java:62) 在 freemarker.core.BooleanExpression._eval(BooleanExpression.java:30) 在 freemarker.core.Expression.eval(Expression.java:81) 在
<#import "/spring.ftl" as spring>
<html>
<body>
Welcome
<!-- For login user -->
<@spring.url '/logout' var="logoutUrl"/>
<form action="$logoutUrl" method="post" id="logoutForm">
<input type="hidden" name="$_csrf.parameterName"
value="$_csrf.token" />
</form>
<script>
function formSubmit()
document.getElementById("logoutForm").submit();
</script>
<#if "$pageContext.request.userPrincipal.name != null"?? >
<span><h2>
User : $pageContext.request.userPrincipal.name | <a
href="javascript:formSubmit()"> Logout</a>
</h2></span>
</#if>
</body>
</html>
请告诉我解决方案,为什么这段代码不起作用
【问题讨论】:
我在这个 hello.ftl 页面中添加了注销代码,但它给了我 freemarker 模板错误。请看代码并告诉我解决方案 【参考方案1】:它尝试将var="logoutUrl"
解释为var == "logoutUrl"
,并因此查找名为var
的变量。为避免这种情况,所有参数都必须按名称传递:
<@spring.url relativeUrl='/logout' var="logoutUrl"/>
虽然给出了额外的参数名称和值,但我不确定你想用这个实现什么。也许你只是想要<@spring.url logoutUrl />
?
【讨论】:
以上是关于Freemarker 模板错误的主要内容,如果未能解决你的问题,请参考以下文章
Liferay,来自搜索的 Freemarker 错误模板,但不是来自其他链接
在 Freemarker 模板中显示 Spring MVC 验证错误