我在我的登录模板中有一些代码,它显示了错误的凭据上的错误。一切看起来都是它应该做的,语法是正确的,但是sparkjava抛出了ParseException。
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)我的代码:
<#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>我真的不知道是怎么回事。我看过文档,我认为我的其他语法很好。你能帮我一下吗?
发布于 2017-02-26 11:08:15
条件中的括号会导致解析错误(例如,<#if($authenticationFailed)>)。或者删除它们,或者作为@ddekany注释在下面的注释中在if关键字和左括号之间放置一个空格。
此外,变量通常不以$开头,但如果变量的名称真正包含$字符,则会工作。
尝尝这个。
<#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>发布于 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 --同样适用于您共享的代码中使用的所有条件分支。
源- 自由制造者文档模板
https://stackoverflow.com/questions/42467637
复制相似问题