第二十小节,我们主要学习了扩展指令的用法。例子中演示了官方文档上的简单用法,随后我们自己进行了拓展。在指令中传入参数,在扩展指令的java类中进行处理,然后输出我们理想中的处理结果。类似的场景还是很多,希望小伙伴们,自己去深入研究。
1、处理遗留的小尾巴
上一小节,只是简单的理解了如何去扩展指令,但是如果我们还想要更加强大的操作怎么办?我们可以扩展一个带有
#end
的指令。让我们一起玩起来吧!
1.1编写HTML页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jfinal模板引擎之二十</title>
</head>
<body>
#now()
这里是body的内容
#end
</body>
</html>
1.2改造java扩展代码
package com.demo.test;
import java.io.Writer;
import com.jfinal.template.Directive;
import com.jfinal.template.Env;
import com.jfinal.template.expr.ast.ExprList;
import com.jfinal.template.stat.Scope;
public class Now extends Directive{
@Override
public void setExprList(ExprList exprList) {
super.setExprList(exprList);
//该方法非必须
}
@Override
public void exec(Env env, Scope scope, Writer writer) {
write(writer,"body执行之前");
stat.exec(env, scope, writer);
write(writer,"body执行之后");
}
@Override
public boolean hasEnd() {
//告诉jfinal,这个指令是包含#end标识结束的
return true;
}
}
1.3查看效果
最终效果
PS:终于清理完小尾巴,好开心,祝小伙伴们周末愉快!