是否可以在百里香中打印一个十六进制数字?
我有一个号码(例如:16711680),我想在页面上将其打印为0xFF0000。
我可以在通过String.format("0x%06X", (0xFFFFFF & intColor));
将值发送到上下文之前执行此操作。我宁愿让视图层格式化值。如何显示数字应该是它的关注点。
我查看了thymeleaf提供的所有#{numbers}格式化程序。似乎没有提供这种类型的格式。
答案 0 :(得分:1)
您可以使用T
Type Operator在类上调用静态方法。所以你可以像往常一样打电话给String.format()
。例如
${T(java.lang.String).format('0x%06X', intColor)}
这里唯一的轻微限制是你无法在Thymeleaf中执行按位和。您需要在将其添加到模型之前执行此操作,或者查看Integer.toHexString(),这样您就可以将数字格式化为无符号格式:
'0x'+${T(java.lang.Integer).toHexString(intColor).toUpperCase()}
第二种方法需要一些额外的工作来获得前导0x
和大写字符。
答案 1 :(得分:0)
如果您使用的是OGNL而不是Spring-EL(如安德鲁的答案),调用静态方法的语法是@class@method
。例如:${@java.lang.Integer@toHexString(someNumber)}