169 похожих чатов

Господа, что не так делаю? Надо, чтобы спригбутовина в rest-контроллере

принимала pathvariable enum в нижнем регистре. Чтобы писать в урле /api/something/person вместо /api/something/PERSON.

У jackon'а есть настройка, как мне кажется для этого.

Feature that determines if Enum deserialization should be case sensitive or not.
If enabled, Enum deserialization will ignore case, that is, case of incoming String
value and enum id (depending on other settings, either `name()`, `toString()`, or
explicit override) do not need to match.
<p>
Feature is disabled by default.

ACCEPT_CASE_INSENSITIVE_ENUMS(false),

Пустой тест-проект. application.properties:
spring.jackson.mapper.accept-case-insensitive-enums=true

public enum Type {
PERSON, OTHER
}

@RestController ...
@GetMapping("/{type}")
public String sayType(@PathVariable Type type) {
return type.toString();
}


И нифига. /api/something/PERSON работает, /api/something/person - нет *.

Spring Boot 2.2.1 и 2.5.14.

*
.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'com.example.jacksonenumcaseinsensitivetest.Type'; nested exception is ...
No enum constant com.example.jacksonenumcaseinsensitivetest.Type.person]

5 ответов

35 просмотров

А если для Type определить конструктор со стринговым параметром?чтобы было что-то типа PERSON("person"), может тогда Type построится из pathvariable

Нужен StringToEnumConverter и добавление его в конфиг

Мб где-то обьявляетс Бин objectMapper и в нем надо прописывать

Посмотри мб по стектрейсу какие классы отрабатывают и загугли как их конфигурить

Roman Zigzag
Посмотри мб по стектрейсу какие классы отрабатываю...

Да там самый банальный веббиндер, как его задачу сделать - 1 строка в Гугле )

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта