Rythm 模板引擎在 Java 代码中定义自定义方法
Rythm template engine define custom method in Java code
我知道可以像这样在模板中定义方法:
@def myMethod(String parameter){
before @parameter after
}
并使用它:
@myMethod("my object")
这将输出:
before my object after
我可以在 Java 代码中定义 myMethod
并在多个模板中使用它吗?
您不需要在 Java 代码中定义该方法。相反,在你的节奏 template home directory 中创建一个名为 __global.rythm
的文件,并在那里定义该方法,然后你所有的节奏模板将自动选择该方法,因为 __global.rythm
将是 @include
每个模板中的节奏引擎自动。以下是我项目中的真实全局节奏文件:
@import com.abc.model.*
@import org.rythmengine.spring.web.Csrf
@import org.rythmengine.RythmEngine
@import com.abc.AppConfig
@import com.abc.model.color.*;
@args Csrf csrf
@def String csrfParam() {
return "__csrf=" + ((null == csrf) ? "nocsrf" : csrf.value);
}
@def RythmEngine rythm() {
return __engine();
}
@def User me() {
return User.me();
}
@def boolean loggedIn() {
return User.me() != null;
}
@def String host() {
return com.abc.AppConfig.host()
}
我知道可以像这样在模板中定义方法:
@def myMethod(String parameter){
before @parameter after
}
并使用它:
@myMethod("my object")
这将输出:
before my object after
我可以在 Java 代码中定义 myMethod
并在多个模板中使用它吗?
您不需要在 Java 代码中定义该方法。相反,在你的节奏 template home directory 中创建一个名为 __global.rythm
的文件,并在那里定义该方法,然后你所有的节奏模板将自动选择该方法,因为 __global.rythm
将是 @include
每个模板中的节奏引擎自动。以下是我项目中的真实全局节奏文件:
@import com.abc.model.*
@import org.rythmengine.spring.web.Csrf
@import org.rythmengine.RythmEngine
@import com.abc.AppConfig
@import com.abc.model.color.*;
@args Csrf csrf
@def String csrfParam() {
return "__csrf=" + ((null == csrf) ? "nocsrf" : csrf.value);
}
@def RythmEngine rythm() {
return __engine();
}
@def User me() {
return User.me();
}
@def boolean loggedIn() {
return User.me() != null;
}
@def String host() {
return com.abc.AppConfig.host()
}