Форматирование шестнадцатеричного числа с помощью Thymeleaf

Можно ли напечатать число в виде шестнадцатеричной строки в тимелеафе?

У меня есть номер (например, 16711680), и я хочу напечатать его как 0xFF0000 на странице.

Я могу сделать это перед отправкой значения в контекст через String.format("0x%06X", (0xFFFFFF & intColor));. Я бы предпочел, чтобы слой представления форматировал значение. Это должно быть проблемой.

Я просмотрел все средства форматирования # {numbers}, которые предоставляет тимелеаф. Кажется, ничто не обеспечивает такого форматирования.


person Broonix    schedule 13.11.2015    source источник


Ответы (2)


Вы можете использовать T Оператор типа для вызова статических методов класса. Так что вы можете просто позвонить String.format(), как обычно. например.

${T(java.lang.String).format('0x%06X', intColor)}

Единственное небольшое ограничение здесь - вы не можете выполнять побитовое и изнутри Thymeleaf. Вам нужно будет сделать это перед добавлением в модель или, возможно, посмотреть на Integer.toHexString (), который позволит вам отформатировать номер, как если бы он был беззнаковым:

'0x'+${T(java.lang.Integer).toHexString(intColor).toUpperCase()}

Этот второй подход требует дополнительной работы, чтобы получить начальный 0x и заглавные буквы.

person Andrew    schedule 26.11.2015

Если вы используете OGNL, а не Spring-EL (как в ответе Эндрю), синтаксис для вызова статических методов - @class@method. Например: ${@java.lang.Integer@toHexString(someNumber)}

person yankee    schedule 11.02.2018