JFinal使用技巧-Enjoy模板判断“==”不同类型时的简写

如题, 最近有个需求,不同客户要做不同的数据展示。 然后就把页面做到数据库中去了,不同租户使用自己的页面,自在。。。扯远了。。。
直接说“==”吧,因为里面涉及到数据库字段有的时候是 Integer有时候是String。。。 == 的时候有点烦,骚不注意就不等了。
以前这种情况都是使用 # if (item_key == user.sex.toString() ?? ) checked #end 这样的操作。
前后都有可能null,我自己写还好,但这个东西后面可能还要交给其他人(甚至客户的技术部)(支持在线编辑),那么他们不注意到这个情况的可能性就大多了。。。
所以! 干脆别写 == 了, 利用Enjoy 模板引擎的Shared Method 扩展搞个java 类进来就OK了
TemplateFn.java

//扩展的方法统一放到该类中
public class TemplateFn {
	
	public boolean eq(Object a, Object b){
		if(Objects.equals(a, b)){
			return true;
		}
		if(a != null && b != null && a.toString().equals(b.toString())){
			return true;
		}
		return false;
	}
	
	public boolean notEq(Object a, Object b){
		return !eq(a, b);
	}
	
}

然后注册到JFinalConfig 》  Engine中去

@Override
public void configPlugin(Plugins me) {
    //Method 扩展
    me.addSharedMethod(new TemplateFn());
    ...
}

然后开心的去使用吧!老项目不用担心翻车了

#if(eq(value, dbValue)) selected #end

例子:image.png
image.png

好了,分享完了, 路过的点个赞哈 image.png

评论区

杜福忠

2020-06-19 22:25

com.jfinal.template.expr.Sym要是支持扩展的话
我感觉我更喜欢用JS里的:==、===、!=、!==来代替现在的操作
=== 搞同类型比较 ,==允许类型转换比较

JJfinal

2020-06-20 22:15

点赞

JFinal

2020-06-20 22:23

== 允许不同类型比较在逻辑上不严谨,如果支持,肯定会出现各种意想不到的后患。 js 的一些设计不严谨,已被证实是非常严重的失误,例如 undefined、null、boolean 这三类东西的比较操作

当前通过 shared method 的用法就挺好