#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();
}