#spring-boot #converters
#spring-boot #конвертеры
Вопрос:
Версия Spring boot: 2.4.0
Класс конвертера
import java.util.UUID;
import org.springframework.core.convert.converter.Converter;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;
@Component
public class StringToUuidConverter implements Converter<String, UUID> {
@Override
public UUID convert(@NonNull String uuid) {
return UUID.fromString(uuid);
}
}
контроллер
....
@Autowired
TestRepos testRepos;
@RequestMapping("test")
public Task t( UUID uuid) {
return this.testRepos.findById(uuid).orElse(null);
}
....
вызовите контроллер с
http://localhost:9090/test?uuid=0459828a-a630-491d-80b9-ab9a412f066e
журнал ошибок
"error": "Bad Request",
"trace": "org.springframework.web.method.annotation.ModelAttributeMethodProcessor$1: org.springframework.validation.BeanPropertyBindingResult: 2 errorsnField error in object 'UUID' on field 'mostSigBits': rejected value [null]; codes [typeMismatch.UUID.mostSigBits,typeMismatch.mostSigBits,typeMismatch.long,typeMismatch];
Какая-либо конфигурация пропущена?
Ответ №1:
Попробуйте:
public Task t(@RequestParam UUID uuid) {
// ...
}
Любой другой аргумент:
Если аргумент метода не соответствует ни одному из предыдущих значений в этой таблице и является простым типом (как определено
BeanUtils#isSimpleProperty
, он разрешен как@RequestParam
. В противном случае он разрешается как@ModelAttribute
.
Кроме того, вам не нужно создавать StringToUuidConverter
класс самостоятельно. Он уже включен.