使用Thymeleaf格式化十六进制数字

时间:2015-11-13 16:48:34

标签: java thymeleaf

是否可以在百里香中打印一个十六进制数字?

我有一个号码(例如:16711680),我想在页面上将其打印为0xFF0000。

我可以在通过String.format("0x%06X", (0xFFFFFF & intColor));将值发送到上下文之前执行此操作。我宁愿让视图层格式化值。如何显示数字应该是它的关注点。

我查看了thymeleaf提供的所有#{numbers}格式化程序。似乎没有提供这种类型的格式。

2 个答案:

答案 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)}