九十八、freemarker框架报错 s.e.ErrorMvcAutoConfiguration$StaticView : Cannot render error page for request
报错信息2022-04-22 12:59:38.904 ERROR 16164 --- [nio-8888-exec-1] freemarker.runtime : Error executing FreeMarker templatefreemarker.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]----后端代码前端代码 其功能要实现下拉框,添加了option却显示不出来(如下图),并且后端数据已经拿到(打印在控制台了),心想就是前端这里拿不到数据。回头看报错信息,发现 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注意 true 前面有一个空格,不然不会生效。 最终效果