我已經在我的登錄模板中顯示了一些代碼,顯示錯誤的憑據在freemarker中寫入錯誤。一切看起來都只是它應該如何,語法是正確的,但sparkjava拋出ParseException的Freemarker:意外的指令,「</#if>」
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>
我真的不知道什麼是錯。我看過文檔,我認爲我的elseif語法很好。你可以幫幫我嗎?
預期的模式是' 「#如果」 空白+ Expression',和你錯過了空白。爲什麼誤導性的錯誤信息呢?因爲FreeMarker的配置完全在2.3。0模式('incompatible_improvements'配置設置),所以它模擬了一個鬼鬼祟祟的語法分析器故障,其中'<#if(',當它是模板中第一個FreeMarker標記時,被錯誤地視爲靜態文本,因此問題只會在'#if>'的表面,我強烈建議將'incompatible_improvements'提高到至少2.3.19,並且使用'()'和'$'是不對的,但是看到的答案是 – ddekany