Наследование шаблонов Rythm

#java #template-engine #rythm

#java #движок шаблонов #ритм

Вопрос:

У нас есть общий шаблон верхнего и нижнего колонтитулов в качестве родительского шаблона, который мы будем повторно использовать для 100 вложенных шаблонов. Директива Extends это не поддерживает…

Когда я просматриваю документацию Rythm, я нашел способ достичь этого с помощью директив include / invoke, но основная цель директивы include / invoke — вызвать общую функцию. Директива Extends поддерживается обратным способом, помещая содержимое основного шаблона с директивой render в качестве родительского элемента и шаблон верхнего / нижнего колонтитула в качестве вложенного шаблона, но использование в реальном времени полностью отличается

Я правильно понимаю? Есть ли способ решить мою проблему?

Отредактировано:

Для достижения этого я закодировал, как показано ниже:

footer.html

 @def header1() {
    <h3>This is footer1 section</h3>
}

@def header2() {
    <h3>This is footer2 section</h3>
}
  

template1.html

 @include("footer.html")
@args String who
<html>
    <head>
        <title>Hello world from Rythm</title>
    </head>
    <body>
        <h1>Hello @who</h1>
        @if(footer.equals("footer1){
            @header1();
        } else {
            @header2();
        }
    </body>
</html>
  

Что я сделал, так это с помощью вызова метода include / invoke я получил результат, но когда я использую extends, это не работает. Если это возможно, можете ли вы решить мой случай, используя extends?

Комментарии:

1. Я не понимаю, почему вы говорите, что директива Extends не поддерживает это. @extends Директива предназначена для реализации компоновки шаблонов. Пожалуйста, обратитесь к fiddle.rythmengine.org/#/editor /…

2. Я добавил пример кода, который я использую в своем приложении. Пожалуйста, изучите это.

Ответ №1:

Чтобы использовать @extends для достижения того же эффекта, вы должны иметь:

layout.html

 <html>
    <head>
        <title>Hello world from Rythm</title>
    </head>
    <body>
        @render()
    </body>
</html>
  

header1.html

 <h3>This is footer1 section</h3>
  

header2.html

 <h3>This is footer2 section</h3>
  

template.html

 @extends(layout)
@args String who, String footer

<h1>Hello @who</h1>
@if(footer.equals("footer1")){
    @header1();
} else {
    @header2();
}