У меня есть Spring Boot WebApp, который использует Thymeleaf для шаблона HTML и в качестве механизма шаблона для электронных писем, отправленных этим веб -приложением. В своем электронном письме я хочу использовать LocalDateTime, который не работает. < /P>
Stacktrace < /p>
Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1001E: Type conversion problem, cannot convert from java.time.LocalDateTime to java.lang.String
at org.springframework.expression.spel.support.StandardTypeConverter.convertValue(StandardTypeConverter.java:87)
at org.springframework.expression.common.ExpressionUtils.convertTypedValue(ExpressionUtils.java:57)
at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:369)
at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:279)
... 49 common frames omitted
Caused by: org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.time.LocalDateTime] to type [java.lang.String]
at org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:288)
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:184)
at org.springframework.expression.spel.support.StandardTypeConverter.convertValue(StandardTypeConverter.java:82)
< /code>
Я уже пытался использовать @bean с @configuration, чтобы зарегистрировать следующий преобразователь: < /p>
public class LocalDateTimeConverter implements Converter, ConditionalConverter {
@Bean
public LocalDateTimeConverter ldtConverter() {
return new LocalDateTimeConverter();
}
@Override
public String convert(LocalDateTime source) {
return source.format(DateTimeFormatter.ofPattern("yyy-MM-dd HH:mm:ss"));
}
@Override
public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
if (sourceType.getType() == LocalDateTime.class && targetType.getType() == String.class ) {
return true;
} else {
return false;
}
}
}
< /code>
Я также попытался зарегистрировать (другой) LocalDateTimeConverter2 в тимелеафтэттертегине, который непосредственно ссылается при отправке электронной почты. < /p>
public class LocalDateTimeConverter2 extends GenericConversionService
implements ConditionalConverter, ConfigurableConversionService, ConversionService {
LocalDateTimeConverter2() {
}
@Override
public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
return (Object) (((LocalDateTime) source).format(DateTimeFormatter.ofPattern("yyy-MM-dd HH:mm:ss")));
}
@Override
public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
if (sourceType.getType() == LocalDateTime.class && targetType.getType() == String.class) {
return true;
} else {
return false;
}
}
public static boolean matches(Class
Подробнее здесь: https://stackoverflow.com/questions/797 ... pring-boot