当前位置: 首页 > 知识库问答 >
问题:

Freemarker模板错误

欧阳俊捷
2023-03-14

当我点击登录按钮并通过数据库成功登录后,它被重定向到hello.ftl页面。但是ftl页面显示此错误

FreeMarker模板错误(调试模式;在生产中使用RETHROW!):以下内容的计算结果为null或missing:==>var[在模板“hello.ftl”第8行,第32列]----提示:如果已知失败的表达式在法律上引用了有时为null或missing的内容,可以指定默认值,如myoptionalvar!mydefault,或者使用<#If myoptionalvar??>when-present<#els>when-missing。(这些仅覆盖表达式的最后一步;要覆盖整个表达式,请使用圆括号:(myoptionalvar.foo)!mydefault,(myoptionalvar.foo)??-------FTL堆栈跟踪(“~”表示嵌套相关):--失败处:#macro url relationveurl extra...[在模板“spring.FTL”中,在宏“url”第89行,第1列]--通过:@spring.url“/logout”,var=“logouturl”[在模板“hello.FTL”中,第8行,第9列]----Java堆栈跟踪(针对程序员)在freemarker.core.invalidreferenceexception.getinstance(invalidreferenceexception.Java:134),在freemarker.core.evalutil.compare(evalutil.Java:196),在freemarker.core.evaluitil.compare(evalutil.Java:113),在freemarker.core.evaluitil.compare(evalutil.Java:113),在freemarker.core.comparisonexpression.evaltoBoolean(

<#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>

请告诉我解决方案,为什么这个代码不起作用

共有1个答案

魏俊茂
2023-03-14

它试图将var=“logouturl”解释为var==“logouturl”,从而查找名为var的变量。为了避免这种情况,所有参数都必须按名称传递:

<@spring.url relativeUrl='/logout' var="logoutUrl"/>

尽管给定了额外的参数名称和值,但我不确定您想用它实现什么。也许您只是想要<@spring.url logoutUrl/>

 类似资料:
  • 以上是我正在开发的Spark应用程序的主要方法。它涉及两个模板:loginform.ftl和result.ftl。ftl是一个简单的html表单,它向服务器发送post请求,由上面代码中的post处理程序处理。当我填写表单并发送请求时,我得到一个500内部服务器错误。这个错误与result.ftl有关,我现在用它来测试模板的制作。我将一个HashMap传递给result.ftl模板。我得到的错误是

  • 在我的应用程序中,所有freemarker模板都位于/templates/ftl/中,因此在应用程序部署期间,我加载了一个类,我调用了一个扩展FreemarkerManager并具有方法的类 这样,当我需要加载模板文件时,我可以这样做: 仅在一种特定情况下,我需要获得一个来自完全不同路径的模板(而不是/templates/ftl/)。 如何在这个特定的时刻声明模板加载的第二个目录,而不破坏所有调用

  • 我的文件在src/main/Resources/freemarker/email_notification.txt 我无法读取freemaker文件,即电子邮件通知。txt,其中包含html文件。 我的推荐信来自这里:http://websystique.com/spring/spring-4-email-using-velocity-freemaker-template-library/ 我尝试

  • 我正在使用freemarker模板生成电子邮件。我将freemarker与spring结合使用。我很难用参数替换来实现国际化。我用它来代替一个参数。例子: 消息你好=你好,{0} 在fm模板中,我有 然而,我无法弄清楚如何进行多参数替换。 消息你好{0},欢迎来到{1} 我如何在模板中表示这一点?当我尝试以下方法时: 它不起作用。你能帮忙吗?当做

  • 我正在尝试使用从多个位置加载模板。这个项目是使用开发的。 我有两个maven项目: > 我的网站:maven的主要项目,包含自定义模板,例如WEB-INF/ftl/landing/login。ftl 通用模板:包含位于WEB-INF/ftl的通用freemarker模板,例如WEB-INF/ftl/landing/login。ftl 例如,Freemarker的想法是在“我的网站”中搜索登陆/登录

  • 问题内容: 如何配置freemarker以在多个jar中搜索模板?随着春天。 一个war文件(要部署)和jar文件(依赖项)。 一战 /freemarker/simple.ftl Two.jar /freemarker/test.ftl 工作。 不工作。找不到test.ftl 如果设置为: 一战 /freemarker/simple.ftl Two.jar /freemarker2/test.ft