首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Freemarker:意外指令,"</#if>“

Freemarker:意外指令,"</#if>“
EN

Stack Overflow用户
提问于 2017-02-26 10:59:31
回答 2查看 3.3K关注 0票数 0

我在我的登录模板中有一些代码,它显示了错误的凭据上的错误。一切看起来都是它应该做的,语法是正确的,但是sparkjava抛出了ParseException。

代码语言:javascript
复制
freemarker.core.ParseException: Syntax error in template "freemarker/admin_login.ftl" in line 40, column 9:
Unexpected directive, "</#if>". Check if you have a valid #if-#elseif-#else structure.
at freemarker.core.FMParser.generateParseException(FMParser.java:5251)
at freemarker.core.FMParser.jj_consume_token(FMParser.java:5122)
at freemarker.core.FMParser.Root(FMParser.java:3433)
at freemarker.template.Template.<init>(Template.java:208)
at freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:495)
at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:409)
at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:261)
at freemarker.template.Configuration.getTemplate(Configuration.java:1786)
at freemarker.template.Configuration.getTemplate(Configuration.java:1646)
at spark.template.freemarker.FreeMarkerEngine.render(FreeMarkerEngine.java:69)
at pl.bluedotdevs.adminpanel.utils.ViewUtil.render(ViewUtil.java:22)
at pl.bluedotdevs.adminpanel.login.LoginController.lambda$static$0(LoginController.java:21)
at spark.RouteImpl$1.handle(RouteImpl.java:61)
at spark.http.matching.Routes.execute(Routes.java:61)
at spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:128)
at spark.embeddedserver.jetty.JettyHandler.doHandle(JettyHandler.java:50)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)
at org.eclipse.jetty.server.Server.handle(Server.java:517)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:302)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:245)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
at java.lang.Thread.run(Thread.java:745)

我的代码:

代码语言:javascript
复制
<#if($authenticationFailed)>
        <div class="alert alert-danger" role="alert">Niepoprawny email lub hasło</div>
    <#elseif($authenticationSucceeded)>
        <div class="alert alert-success" role="alert">Zalogowano pomyślnie</div>-->
    <#elseif($loggedOut)>
        <div class="alert alert-success" role="alert">Wylogowano pomyślnie</div>-->
    </#if>

我真的不知道是怎么回事。我看过文档,我认为我的其他语法很好。你能帮我一下吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-26 11:08:15

条件中的括号会导致解析错误(例如,<#if($authenticationFailed)>)。或者删除它们,或者作为@ddekany注释在下面的注释中在if关键字和左括号之间放置一个空格。

此外,变量通常不以$开头,但如果变量的名称真正包含$字符,则会工作。

尝尝这个。

代码语言:javascript
复制
<#if $authenticationFailed>
        <div class="alert alert-danger" role="alert">Niepoprawny email lub hasło</div>
<#elseif $authenticationSucceeded>
        <div class="alert alert-success" role="alert">Zalogowano pomyślnie</div>-->
<#elseif $loggedOut>
        <div class="alert alert-success" role="alert">Wylogowano pomyślnie</div>-->
</#if>
票数 1
EN

Stack Overflow用户

发布于 2017-02-26 11:21:57

if一起使用时,括号可能会导致异常。“自由制造者”中使用的具体表达式有:

当您为插值提供值时:插值的用法是${表达式},其中表达式以文本的形式提供要插入到输出中的值。因此,${(5 + 8)/2}将"6.5“打印到输出(如果输出的语言不是美国英语,则可能打印"6,5”)。

因此,如果是这样的话,您可以尝试使用<#if ${authenticationFailed}>

当您为指令参数提供一个值时:您已经在“入门”部分中看到了if指令。这个指令的语法是:<#if expression>.这里的表达式必须计算为布尔值。例如,在<#if 2< 3>中,2<3 (2小于3)是计算为true的表达式。

在这种情况下,您也可以使用@Frank建议的<#if authenticationFailed>

Note --同样适用于您共享的代码中使用的所有条件分支。

源- 自由制造者文档模板

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42467637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档