2017-12-08 32 views
0

私は、いくつかの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:includeth:insertth:replace

を使用してみました。フラグメントが定義されている(それで別のフラグメントを選択できるようにする)のを検出できますか?あるいは、不足している断片を処理するためにはどのようなツールが使用できますか?

私はThymeleafにはかなり新しいので、おそらくかなり基本的なものを逃してしまったでしょう。

答えて

0

いつも通り、私は質問を提出した後に何かを見つけます。

advanced conditional insertion of fragmentsのドキュメントは、私が

マイフラグメントの挿入は今

<div th:replace="~{:: __${entity.fields[code]}__} ?: _"> 
    Invalid code 
</div> 
ように見えるを達成しようとしているものの例を含んでいます
関連する問題