So implementieren Sie einen ConversionService von LocalDateTime zu String im Spring Boot

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: So implementieren Sie einen ConversionService von LocalDateTime zu String im Spring Boot

by Anonymous » 25 Aug 2025, 16:54

Ich habe einen Spring -Boot -Webapp, der Thymeleaf für HTML -Vorlagen und als Templating -Engine für E -Mails auch von dieser WebApp verwendet. In meiner E -Mail möchte ich ein LocalDatetime verwenden, der nicht funktioniert.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>
Ich habe bereits versucht, eine @Bean mit einer @Configuration zu verwenden, um den folgenden Konverter zu registrieren: < /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>
Ich habe auch versucht, (ein anderes) localDatetimeConverter2 in der ThymeleAtemplateEngine zu registrieren, auf die beim Senden einer E -Mail direkt verwiesen wird. < /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

Top