这一小节,我们将一起玩2个好玩的技能点,第一个是通过java类来增强JTE(JFinal Template Engine);第二个是通过共享对象来增强JTE。好啦,让我们一起开车!
1、为什么需要使用java类增强指令?
个人的愚见是:在模板上最好还是写一些简单明了的代码,稍微复杂一点的代码还是写在java类的业务层;当然这样也让代码具有可重用性。
使用java类增强JTE无需继承任何类或者实现接口,这是一个比较好的地方,这样做可以实现解耦。首先我们得编写一个普通的java类,并定一个或多个方法。在Now类中,编写一个SayHello()方法,该方法接受一个String类型的参数,代码如下:
package com.demo.test;
public class Now{
public String SayHello(String name){
return "hello "+name+",欢迎你进入王者峡谷!";
}
}
代码已经写完了,那总得有个配置的地方吧?我们得通知jfinal,这是需要添加的方法。是的,我们只需要在模板引擎的配置项中配置需要增强的java类的实例即可。使用方法如下:
public void configEngine(Engine me) {
//添加共享方法的java类实例
me.addSharedMethod(new Now());
}
到此为止,即可编写HTML页面代码,并调用SayHello方法。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jfinal模板引擎之二十二</title>
</head>
<body>
#(SayHello("yetangtang"))
</body>
</html>
好激动,一起来查看效果!
真是一个有趣的实验
2、通过共享对象增强JTE
从标题其实就可以理解,其实这个黑科技就是添加全局的对象来方便操作。接下来,我们需要改造上面的方法。第一步,先去修改配置。
public void configEngine(Engine me) {
//假装Now类,是一个工具类
me.addSharedObject("my_util", new Now());
//假装SayHello的人不会有什么变化,是不是有点常量的赶脚
me.addSharedObject("yetangtang","sugarYe");
}
是时候改造模板页面上的代码,见证奇迹了。通过代码可以看出来是直接通过对象名调用方法的,跟前面的方法调用有所不同。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jfinal模板引擎之二十二</title>
</head>
<body>
#(my_util.SayHello(yetangtang))
</body>
</html>
老规矩,有图有真相。
3完美实现
PS:好了,小伙伴们,祝你们学习愉快!请更多的阅读官方文档。