Quarkus Qute удваивается с 2 десятичными знаками

#java #quarkus #quarkus-qute

#java #quarkus #quarkus-qute

Вопрос:

Все сказано в названии. Я хочу преобразовать double в строку с 2 десятичными знаками.

Я попробовал на примере quarkus :

 @TemplateExtension(namespace = "str")
class StringExtensions {

   static String format(String fmt, Object... args) {
      return String.format(fmt, args);
   }

   static String reverse(String val) {
      return new StringBuilder(val).reverse().toString();
   }
}
  

И это мой шаблон

 {str:format('%.2f', total)}
  

Но это всегда приводит к NOT_FOUND .

Единственный способ — поместить :

     static String formatNumber(Double num) {
        return String.format("%.2f", num);
    }
  

и измените мой шаблон :

 {total.formatNumber}
  

Есть ли лучший способ? Я использовал расширение quarkus-rest-easy-qute и quarkus-qute, оба они одинаковы.

Ответ №1:

была ошибка в том, как обрабатывались переменные для методов расширения с пространством имен. Я только что создал PR с исправлением: https://github.com/quarkusio/quarkus/pull/14226 .

Уродливым обходным путем является использование дополнительного «фиктивного» параметра в шаблоне, например {str:format('%.2f', total, 1)} , и игнорирование этого параметра в указанном формате.