Spring boot 如何在spring boot的小胡子中有一个基本布局?

Spring boot 如何在spring boot的小胡子中有一个基本布局?,spring-boot,mustache,Spring Boot,Mustache,嗨,有没有一种方法可以让我有一个基本的布局,比如在使用mustache for spring boot时,在节点的express中?这样我就可以: 基地布局: <html> <body> <p>Title</p> {{{body}}} // or similar, not sure about # </html> 头衔 {{{body}}}//或类似,不确定# 然后使用控制器返回的视图名称作为内容来呈现视图,因此

嗨,有没有一种方法可以让我有一个基本的布局,比如在使用mustache for spring boot时,在节点的express中?这样我就可以:

基地布局:

<html>
   <body>
   <p>Title</p>
   {{{body}}} // or similar, not sure about #
</html>

头衔

{{{body}}}//或类似,不确定#

然后使用控制器返回的视图名称作为内容来呈现视图,因此外部总是相同的?

您可以通过Mustache lambda函数来实现这一点。通过本教程,我能够实现您所需要的:

创建如下控制器建议:

@ControllerAdvice
class LayoutAdvice {

  @ModelAttribute("layout")
  public Mustache.Lambda layout() {
    return new Layout();
  }
}

class Layout implements Mustache.Lambda {

  String body;

  @Override
  public void execute(Fragment frag, Writer out) throws IOException {
    body = frag.execute();
  }
}
这将使名为“layout”的lambda函数可用于您的胡须模板。lambda函数本身接收片段(将位于布局标记内,请参见下文),并将其存储在布局对象的
主体
字段中。可以从布局模板中访问此选项:

<html>
<body>
    {{{layout.body}}}
</body>
</html>
它将产生所需的输出:

<html>
<body>
    <h1>Demo</h1>
    <div>Hello World</div>
</body>
</html>

演示
你好,世界

spring boot mustache starter pack使用的mustache for java版本不支持继承。正是因为这个原因,我选择了鹅卵石;类似的、干净的语法和完整的继承支持。这里的指南:通常你不应该仅仅发布一个链接,还应该引用最相关的部分,并解释它如何应用于所问的问题:一个指向解决方案的链接是受欢迎的,但请确保你的答案在没有它的情况下是有用的:这样你的其他用户就会知道它是什么以及它为什么存在,然后引用你链接到的页面最相关的部分,以防目标页面不可用。好吧好吧,我正在编辑我的答案并添加上下文,对不起!:)好的,我在我的回答中添加了引语和解释。很抱歉
<html>
<body>
    <h1>Demo</h1>
    <div>Hello World</div>
</body>
</html>