Freemarker模板错误
当我点击登录按钮,并通过数据库成功登录后重定向到hello.ftl页面。但是,FTL页面显示此错误Freemarker模板错误
Freemarker模板错误(DEBUG模式;在生产中使用重新抛出!): 下面已经评估为空或丢失:==> VAR [模板 “hello.ftl”在第8行,第32列] ----提示:如果已知错误表达式 在合法地指向某些有时为空或缺少 的情况下,可以指定缺省值,如myOptionalVar!myDefault, 或使用< #if myOptionalVar什么时候存在< #else>何时失踪。 (这些 只覆盖了表达式的最后一步;要覆盖整个 表达式,请使用括号:(myOptionalVar.foo)!myDefault, (myOptionalVar.foo)---- ---- ---- FTL堆栈跟踪( “〜”表示与嵌套有关的 ): - 失败:#macro url relativeUrl额外... [ 模板“spring.ftl”在第89行第1列的“url”中] - 到达 通过:@spring .url“/ logout”,var =“logoutUrl”[模板 “hello.ftl”在第8行,第9列] ---- 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>
请告诉我的解决方案,为什么这个代码是不起作用
它试图将var="logoutUrl"
解释为var == "logoutUrl"
,并因此查找名为var
的变量。为了避免这种情况,所有参数必须通过名字传递:
<@spring.url relativeUrl='/logout' var="logoutUrl"/>
虽然给出额外的参数名称和值我不知道你的意思来实现这一点。也许你只想要<@spring.url logoutUrl />
?
我已在此hello.ftl页面中添加了注销码,但它会给我freemarker模板错误。请查看代码并告诉我解决方案 –