模板引擎中如何进行字符串和数字比较,类型转换

#if(item_key == user.sex) checked="checked" #end

判断很简单

item_key 是字符串类型,

user.sex 是数字类型,

这两个怎么判断相等呢?怎么进行类型转换呢?

评论区

夕阳老贼

2018-12-19 16:02

#if(cn.hutool.core.util.NumberUtil::parseInt(item_key) == user.sex) checked="checked" #end 目前我是这样处理的,是否符合波总设计?

JFinal

2018-12-19 16:17

不用这么麻烦:
# if ( item_key.toInt() == user.sex) checked #end

也可以这样:
# if (item_key.toInt() == user.sex.toInt()) checked #end

注意看一下 enjoy 的 Extension method 特性:
https://www.jfinal.com/doc/6-9

enjoy 默认为 String、Integer、Long、Double、Float、Char、Byte 等等类添加了
toInt()、toLong()、toBoolean() 等 extension method,在你无法确定当前变量的类型时,使用这些方法,即可将类型确定下来

确定下来类型以后就可以用 == 去比较了

对于 String 型的比较直接用 == 比较,不需要 equals 方法,enjoy 对 String 的比较做了扩展,无需 equals

JFinal

2018-12-19 16:20

再补充一下,你也可以用 toString() 来做:
# if (item_key == user.sex.toString()) checked #end

当你不确定变量是否存在时,可以用下面的方法避免空指针异常:
# if (item_key == user.sex.toString() ?? ) checked #end

上面代码中你的 user 以及 user.sex 都可以为 null

夕阳老贼

2018-12-19 19:10

@JFinal 多谢波总!

蛋蛋丶

2019-03-28 14:12

@JFinal 有个类似的问题想问您,就是当返回值是数字的类时,会出现这样的‘10.0’,但是展示的不需要小数点后的,该如何解决呢

蛋蛋丶

2019-03-29 09:51

@蛋蛋丶 http://www.jfinal.com/feedback/4114 已解决

JFinal

2019-03-29 10:27

@蛋蛋丶 为什么不用 xxx.toInt() 来做? 前面已经说得很清楚了

蛋蛋丶

2019-04-03 14:20

@JFinal 当时试过确实没有解决,刚刚试下竟然又可以了,感谢!