SpringEL中使用T(Math)报EL1005E:找不到Math类型如何解决?
解决Thymeleaf中SpringEL调用Math.floor的EL1005E异常
问题原因
SpringEL的T()运算符引用Java类时,必须指定全限定类名。你直接写T(Math)会触发EL1005E异常,因为JDK的Math类全路径是java.lang.Math,SpringEL不会自动导入java.lang包下的类。
解决方法
方法1:使用全限定类名调用Math.floor
修改模板中的表达式,显式指定java.lang.Math:
startPage = ${T(java.lang.Math).floor(pageNumber / pageSize) * pageSize + 1}
方法2:利用整数除法简化计算(适用于pageNumber、pageSize为整数的场景)
如果pageNumber和pageSize都是整数,floor(pageNumber / pageSize)的效果等价于整数除法(自动舍去小数部分),可以直接简化表达式,避免调用Math类:
startPage = ${(pageNumber / pageSize) * pageSize + 1}
验证说明
修改后重新渲染模板,SpringEL就能正确解析表达式,计算出预期的startPage值。
内容的提问来源于stack exchange,提问作者ccc
相关产品推荐
相关产品推荐

