九十八、freemarker框架报错 s.e.ErrorMvcAutoConfiguration$StaticView : Cannot render error page for request

简介: 九十八、freemarker框架报错 s.e.ErrorMvcAutoConfiguration$StaticView : Cannot render error page for request

报错信息


14.png


2022-04-22 12:59:38.904 ERROR 16164 --- [nio-8888-exec-1] freemarker.runtime                       : Error executing FreeMarker template


freemarker.core.InvalidReferenceException: The following has evaluated to null or missing:

==> pageContext  [in template "courseAdd.html" at line 84, column 29]


----

Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??

----


----

FTL stack trace ("~" means nesting-related):

   - Failed at: ${pageContext.request.contextPath}  [in template "courseAdd.html" at line 84, column 27]

----


后端代码


15.png


前端代码


16.png


其功能要实现下拉框,添加了option却显示不出来(如下图),并且后端数据已经拿到(打印在控制台了),心想就是前端这里拿不到数据。


17.png



回头看报错信息,发现


o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is freemarker.core.InvalidReferenceException: The following has evaluated to null or missing:


大致意思为:Servlet请求处理失败,可能为空值或缺失值


问题分析


那应该就是空值的问题,导致下拉框无法正常显示,teacherNames中存在空值


看日志 给出了处理办法即(上方标红加粗的提示) 添加

<div class="layui-input-block">
<!--                <#if myOptionalVar??>when-present<#else>when-missing</#if>-->
                <select id="baseCourseSelect" lay-search>
                    <option>--请选择——</option>
                        <#list teacherNames as tname>
                    <option value="${tname}">${tname}</option>
                        </#list>
                </select>
            </div>

后来通过查找找到了最终解决方法:


问题解决


在配置项(application.yml)中加入全局去空值的设置:


spring.freemarker.settings.classic_compatible= true

18.png


注意 true 前面有一个空格,不然不会生效。


最终效果


19.png

相关文章
|
移动开发 前端开发 JavaScript
一些框架获取当前登录用户以及用户信息整理
无论是哪一个框架,获取当前登录用户信息是必不可少的,做一些功能的时候我们肯定得用到当前登陆者信息,所以我就查找了一下几个框架是如何获取当前用户信息,例如在若依框架中,用 this.$store.state.user就可以获取到。当获得的信息是极少时,不足够我们做其他功能时,当然你也可以自己在这个获取的基础上面增加所需信息即可。
一些框架获取当前登录用户以及用户信息整理
localdatetime 比较相等
localdatetime 比较相等
1424 2
|
5月前
|
人工智能 弹性计算 缓存
手把手教程:5分钟部署个人版DeepSeek大模型,日均成本仅1元!
阿里云ECS一键部署方案,无需代码、不需显卡,最快5分钟即可搭建专属私有AI助手网站:对话永久保存、支持亲友共享、可自由切换DeepSeek/Qwen/Llama等多模型,日均成本仅约1元,真正零门槛实现AI私有化!
|
XML 分布式计算 Hadoop
hadoop
hadoop
1996 0
|
Java Apache 开发者
解决java.lang.IllegalArgumentException: Invalid uri由无效查询引起的问题
最后,当你修改代码以避免这个异常时,保持代码的整洁和可读性同样重要。注释你的代码,用意图清晰的方法名,并确保逻辑简单明了,这样在未来你或其他开发者需要时可以轻松地维护它。
1439 20
|
Cloud Native 关系型数据库 分布式数据库
PolarDB开源:云原生数据库的新篇章
阿里云自研的云原生数据库PolarDB于2023年5月正式开源,采用“存储计算分离”架构,具备高性能、高可用及全面兼容性。其开源版本提供企业级数据库解决方案,支持MySQL、PostgreSQL和Oracle语法,适用于高并发OLTP、核心业务系统等场景。PolarDB通过开放治理与开发者工具构建完整生态,并展望更丰富的插件功能与AI集成,为中国云原生数据库技术发展贡献重要力量。
1067 17
|
搜索推荐
【异常】Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /127.0.0.1:9300
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /127.0.0.1:9300
5475 0
【异常】Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /127.0.0.1:9300
|
自然语言处理 Java 索引
ElasticSearch 实现分词全文检索 - delete-by-query
ElasticSearch 实现分词全文检索 - delete-by-query
342 1
|
机器学习/深度学习 人工智能 监控
AI行为分析
**AI行为分析融合视觉技术,自动监测与理解人类及动物行为。在教育中,它监控课堂行为,提升教学质量;在安防领域,确保公共安全,预警异常事件;科研中,助力动物行为研究,推动神经科学探索。技术进步正拓宽其应用边界,强化安全管理与决策支持。**
897 6