Size: a a a

Java/Kotlin and more

2020 December 21

АК

Артём Котов... in Java/Kotlin and more
Добрый вечер. Делаю бложик с использованием #spring, хочу прикрутить валидацию для формы создания новой статьи. Повесил нужную аннотацию в классе`Article`:
@Lob
@Size(min = 2)
String contentJson;
но по какой-то причине длинная строка (указана ниже) не проходит валидацию. Я что-то делаю не так?

Текст ошибки из BindingResult:
Field error in object 'article' on field 'contentJson': rejected value [{"time":1608573995135,"blocks":[{"type":"paragraph","data":{"text":"hhhhh"}}],"version":"2.19.1"}]; codes [Min.article.contentJson,Min.contentJson,Min.java.lang.String,Min]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [article.contentJson,contentJson]; arguments []; default message [contentJson],2]; default message [должно быть не меньше 2]
`

Вместо @Size(min = 2) пробовал использовать @Min(2) -- результат тот же.
источник

AM

Arman Merkulov in Java/Kotlin and more
какая бд?
источник

AM

Arman Merkulov in Java/Kotlin and more
может что-то с @Lob вроде как в байтах подразумевается поле, если не ошибаюсь
источник

П

Павел Сарпов... in Java/Kotlin and more
Привет.
На серваке есть метод, оформлен вот так
@ResponseBody
@RequestMapping("/xxx», method = [RequestMethod.POST], consumes = [MediaType.MULTIPART_FORM_DATA_VALUE, MediaType.APPLICATION_JSON_VALUE], produces = [MediaType.APPLICATION_JSON_VALUE])
fun xxx(@RequestHeader(value = "access-token", required = true) @Valid token: String,
@RequestPart(value = "images", required = true)images:List<MultipartFile>,
@RequestPart(value = "body", required = true) @Valid body: TransformationRequest): ResponseEntity<*>



Через Postman отправляю запрос. Выбрал body -> form/data, вписал там значения
images ФАЙЛ
images ФАЙЛ
body JSON
и в header access-token

отправляю запрос
Получаю 415
"error": "Unsupported Media Type",
   "message": "Content type 'multipart/form-data;boundary=--------------------------638843711147466824362475;charset=UTF-8' not supported"


Кто знает, что не так делаю? Мне надо из постмана проверить апишку
источник

П

Павел Сарпов... in Java/Kotlin and more
Вопрос снят. Забыл убрать httpServletRequest
источник

АК

Артём Котов... in Java/Kotlin and more
Arman Merkulov
какая бд?
H2
источник

АК

Артём Котов... in Java/Kotlin and more
Валидация от бд не зависит, насколько я понимаю
источник

АК

Артём Котов... in Java/Kotlin and more
Arman Merkulov
может что-то с @Lob вроде как в байтах подразумевается поле, если не ошибаюсь
@Lob это large object и со строками он работает прекрасно, до добавления валидаций проблем с ним не было
источник

AM

Arman Merkulov in Java/Kotlin and more
Артём Котов
@Lob это large object и со строками он работает прекрасно, до добавления валидаций проблем с ним не было
есть два представление @Lob это CLOB(текстовое) и BLOB(бинарное)
источник

АК

Артём Котов... in Java/Kotlin and more
Для строк же должен использоваться CLOB
источник

AM

Arman Merkulov in Java/Kotlin and more
хотя думаю, что не в этом @Lob проблема, как ты и сказал валидация происходит при запросе, а это далеко до сохранения
источник

AM

Arman Merkulov in Java/Kotlin and more
а у тебя ведь стоит аннотация в контроллере @Valid?
источник

АК

Артём Котов... in Java/Kotlin and more
Ага
источник

AM

Arman Merkulov in Java/Kotlin and more
нужно дебажить
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
Артём Котов
Добрый вечер. Делаю бложик с использованием #spring, хочу прикрутить валидацию для формы создания новой статьи. Повесил нужную аннотацию в классе`Article`:
@Lob
@Size(min = 2)
String contentJson;
но по какой-то причине длинная строка (указана ниже) не проходит валидацию. Я что-то делаю не так?

Текст ошибки из BindingResult:
Field error in object 'article' on field 'contentJson': rejected value [{"time":1608573995135,"blocks":[{"type":"paragraph","data":{"text":"hhhhh"}}],"version":"2.19.1"}]; codes [Min.article.contentJson,Min.contentJson,Min.java.lang.String,Min]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [article.contentJson,contentJson]; arguments []; default message [contentJson],2]; default message [должно быть не меньше 2]
`

Вместо @Size(min = 2) пробовал использовать @Min(2) -- результат тот же.
Зачем лоб? Это сущность бд?
источник

АК

Артём Котов... in Java/Kotlin and more
да
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
Павел Сарпов
Привет.
На серваке есть метод, оформлен вот так
@ResponseBody
@RequestMapping("/xxx», method = [RequestMethod.POST], consumes = [MediaType.MULTIPART_FORM_DATA_VALUE, MediaType.APPLICATION_JSON_VALUE], produces = [MediaType.APPLICATION_JSON_VALUE])
fun xxx(@RequestHeader(value = "access-token", required = true) @Valid token: String,
@RequestPart(value = "images", required = true)images:List<MultipartFile>,
@RequestPart(value = "body", required = true) @Valid body: TransformationRequest): ResponseEntity<*>



Через Postman отправляю запрос. Выбрал body -> form/data, вписал там значения
images ФАЙЛ
images ФАЙЛ
body JSON
и в header access-token

отправляю запрос
Получаю 415
"error": "Unsupported Media Type",
   "message": "Content type 'multipart/form-data;boundary=--------------------------638843711147466824362475;charset=UTF-8' not supported"


Кто знает, что не так делаю? Мне надо из постмана проверить апишку
Зачем @Valid на токене?)
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
И она же приходит с фронта?
источник

АК

Артём Котов... in Java/Kotlin and more
при создании новой статьи, да
источник

АК

Артём Котов... in Java/Kotlin and more
Не знаю, есть ли смысл использовать @ModelAttribute для Article, учитывая то, что по факту приходят только 2 поля: заголовок статьи и текст
источник