JFinal3.0快速上手,遇见模板引擎(二十一)

第二十小节,我们主要学习了扩展指令的用法。例子中演示了官方文档上的简单用法,随后我们自己进行了拓展。在指令中传入参数,在扩展指令的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:终于清理完小尾巴,好开心,祝小伙伴们周末愉快!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容