エラーメッセージ
2022-04-22 12:59:38.904エラー16164 --- [nio-8888-exec-1] freemarker.runtime:FreeMarkerテンプレートの実行中にエラーが発生しました
freemarker.core.InvalidReferenceException:以下はnullまたは欠落していると評価されました:
==>pageContext[テンプレート"courseAdd.html"の84行29列目]----
ヒント:失敗した式が合法的にnullまたは欠落しているものを参照していることがわかっている場合は、myOptionalVar!myDefaultのようなデフォルト値を指定するか、<#if myOptionalVar ??> when-present <#else>whenを使用します。 -欠落しています</#if>。(これらは式の最後のステップのみをカバーします。式全体をカバーするには、括弧を使用します:(myOptionalVar.foo)!myDefault、(myOptionalVar.foo)??
--------
FTLスタックトレース(「〜」はネスト関連を意味します):
-失敗:${pageContext.request.contextPath}[テンプレート"courseAdd.html"の84行27列目]
----
バックエンドコード
フロントエンドコード
その機能はドロップダウンボックスを実装する必要がありますが、オプションが追加されていますが、表示できず(下図のように)、バックエンドデータが取得されています(コンソールに印刷されています)。フロントエンドはここでデータを取得できません。
エラーメッセージを振り返ると、
oaccC [。[。[/]。[dispatcherServlet]:パス[]のコンテキストでサーブレット[dispatcherServlet]のServlet.service()が例外をスローしました[リクエスト処理に失敗しました。ネストされた例外はfreemarker.core.InvalidReferenceExceptionです:以下はnullまたは欠落していると評価されました:
一般的な意味は次のとおりです。サーブレット要求の処理に失敗しました。nullまたは値が欠落している可能性があります
問題分析
これは空の値の問題であり、ドロップダウンボックスが正常に表示されず、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)に、グローバルde-null値の設定を追加します。
spring.freemarker.settings.classic_compatible= true
trueの前にスペースがあることに注意してください。スペースがないと、有効になりません。
最終効果