Я создал метод в классе 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, когда захочу?
Ошибка запуска вашего приложения @Bean
, Spring не может найти значение n
для создания bean-компонента. Таким образом, вам нужно удалить метод Bean и вызвать метод CommonUtils, используя следующий синтаксис:
<p th:text = "${@commonUtils.ConvertSecToHHMM(500)}"></p>
Просто для начала, если ваш метод является чистой функцией, почему вы не хотите, чтобы он был статическим?