Как вызывать методы из шаблона Thymeleaf в Spring Boot?

Я создал метод в классе CommonUtils, который я пытаюсь вызвать в Thymeleaf, но он выдает ошибку

EL1004E: вызов метода: метод ConvertSecToHHMM(java.lang.Integer) не может быть найден по типу com.exm.util.CommonUtils

@Component
public class CommonUtils {

    // function convert second into hours and minutes.
    public  String ConvertSecToHHMM(int n) {
        n = n % (24 * 3600);
        int hour = n / 3600;

        n %= 3600;
        int minutes = n / 60 ;

        String finalTime = hour + " " + "hr " + minutes + " " + "min ";
        return finalTime;
    }
}

В Thymeleaf я написал это

<td th:text = "${T(com.exm.util.CommonUtils).ConvertSecToHHMM(recentActivities.timeSpent)}"></td>

когда я делаю метод ConvertSecToHHMM(int n) статическим, он работает нормально. Но я не хочу делать этот метод статичным.

Поэтому я попробовал другой подход, используя инъекцию бобов; у меня тоже не работает:

@Configuration
public class MyConfigurations {
    @Bean
    public static String ConvertSecToHHMM(int n) {
        n = n % (24 * 3600);
        int hour = n / 3600;

        n %= 3600;
        int minutes = n / 60 ;

        String finalTime = hour + " " + "hr " + minutes + " " + "min ";
        return finalTime;
    }

}

я получаю эту ошибку

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of method ConvertSecToHHMM in com.exm.configurations.MyConfigurations required a bean of type 'int' that could not be found.

Есть ли способ создать свои методы использования в отдельном классе, и я могу вызывать их из Thymeleaf, когда захочу?

Просто для начала, если ваш метод является чистой функцией, почему вы не хотите, чтобы он был статическим?

chrylis -cautiouslyoptimistic- 26.12.2020 08:41
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
2 102
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ошибка запуска вашего приложения @Bean, Spring не может найти значение n для создания bean-компонента. Таким образом, вам нужно удалить метод Bean и вызвать метод CommonUtils, используя следующий синтаксис:

<p th:text = "${@commonUtils.ConvertSecToHHMM(500)}"></p>

Другие вопросы по теме