Quarkus Qute多层include模板嵌套调用异常问题咨询
问题根因
- Qute模板引擎解析片段块(
{#xxx}这种自定义注入块)时,默认会将当前片段内的子片段块归属到最近的上层{#include}对应的模板,你的代码中{title}块处于{#pageContent}块内部,会被Qute识别为外层mainWebPageTemplate的片段参数,而不是内层modal模板的参数,因此抛出参数不匹配/未识别的异常。 - 额外需确认:你的
webui/bootstrapComponents/modal.html模板路径需和Quarkus默认模板根目录(src/main/resources/templates)的相对路径匹配,且modal模板内部使用{#insert title}接收传入的标题片段。
解决方案
方案1:给嵌套include指定别名(推荐,适用于复杂片段参数)
给内层include的模板设置别名,明确指定片段块的归属,Qute就可以正确识别参数所属的模板,修正后的index.html代码如下:
{#include webui/mainWebPageTemplate} {#pageContent} {#include webui/bootstrapComponents/modal as modal} {#modal.title}Add/Edit Storage Block{/modal.title} {/include} {/pageContent} {/include}
方案2:直接传递字符串参数(更简洁,适用于纯文本参数)
如果你的modal模板的title只是纯文本内容,不需要传递HTML片段,可以直接把参数写在include标签内,不需要单独写片段块:
- 先修改modal模板,把原来的
{#insert title}默认标题{/}改成直接输出变量{title ?: '默认标题'} - 修正index.html代码:
{#include webui/mainWebPageTemplate} {#pageContent} {#include webui/bootstrapComponents/modal title="Add/Edit Storage Block"/} {/pageContent} {/include}
内容的提问来源于stack exchange,提问作者Snappawapa
相关产品推荐
相关产品推荐

