私は、いくつかのHTML文書をレンダリングするためにThymeleafを使用しているSpring Boot(2M6)アプリケーションを持っています。Thymeleaf無視フラグメントが見つかりません
私のテンプレートには、最終的にユーザーの入力に基づいて選択される断片が含まれています。場合によっては、ユーザ入力によって存在しないフラグメントが選択されることがあります。
これはエラーであり、現在ではこの例外が発生し、テンプレートはレンダリングされません。私は別の、デフォルトの "無効な選択"フラグメント、またはおそらく空のフラグメントをレンダリングしたいと思います。 entity.fields[code]
が一致th:fragment
が存在するために値が含まれている場合
スタックトレースの上端は、すべてが順調で、この
org.thymeleaf.exceptions.TemplateInputException: Error resolving fragment: ":: ${entity.fields[code]}": template or fragment could not be resolved (template: "common/fragments" - line 5, col 14)
at org.thymeleaf.standard.processor.AbstractStandardFragmentInsertionTagProcessor.doProcess(AbstractStandardFragmentInsertionTagProcessor.java:117) ~[thymeleaf-3.0.8.RELEASE.jar:3.0.8.RELEASE]
at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) ~[thymeleaf-3.0.8.RELEASE.jar:3.0.8.RELEASE]
at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95) ~[thymeleaf-3.0.8.RELEASE.jar:3.0.8.RELEASE]
at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) ~[thymeleaf-3.0.8.RELEASE.jar:3.0.8.RELEASE]
at org.thymeleaf.engine.ProcessorTemplateHandler.handleStandaloneElement(ProcessorTemplateHandler.java:918) ~[thymeleaf-3.0.8.RELEASE.jar:3.0.8.RELEASE]
at org.thymeleaf.engine.StandaloneElementTag.beHandled(StandaloneElementTag.java:228) ~[thymeleaf-3.0.8.RELEASE.jar:3.0.8.RELEASE]
at org.thymeleaf.engine.Model.process(Model.java:282) ~[thymeleaf-3.0.8.RELEASE.jar:3.0.8.RELEASE]
のように見えます。フラグメントが存在しない場合は
AbstractStandardFragmentInsertionTagProcessor.doProcess
AbstractStandardFragmentInsertionTagProcessor#computeFragmentから戻って作業するには、選択によって、常に失敗しているようです。
これはanother answerとは逆のようです。 FWIW私はth:include
、th:insert
とth:replace
を使用してみました。フラグメントが定義されている(それで別のフラグメントを選択できるようにする)のを検出できますか?あるいは、不足している断片を処理するためにはどのようなツールが使用できますか?
私はThymeleafにはかなり新しいので、おそらくかなり基本的なものを逃してしまったでしょう。