#java #spring-boot #validation
#java #spring-boot #проверка
Вопрос:
введите описание изображения здесь, у меня есть запрос, подобный этому:
@Controller
public class Test {
@ResponseBody
@PostMapping("/s")
public ResData test(@RequestBody @Valid ResData resData){
System.out.println(resData);
return resData;
}
}
@Data
class ResData{
@NotNull
@Valid
Message MSG;
int code;
}
@Data
class Message {
@NotBlank(message = "s1 cannot be blank.")
String s1;
String s2;
}
но когда я тестирую его с помощью post некоторые данные, подобные этому:
{
"MSG":{
"s1":" ",
"s2":"ss2"
},
"code":"200"
}
он просто не может распознать:
{
"code": 10004,
"msg": "参数校验失败",
"exceptionMsg": "校验失败:MSG:must not be null, ",
"body": null
}
Однако, когда я меняю «MSG» на строчный «msg», это просто сработало.
Но в моей ситуации параметр, который здесь указан, указан в верхнем регистре,
может кто-нибудь сказать мне правду?
большое вам спасибо!!
Ответ №1:
Я бы рекомендовал использовать нижний регистр для именования свойств, но вы можете использовать @JsonProperty
аннотацию, чтобы сообщить Джексону, что фактическое свойство Json имеет верхний регистр
@Data
class ResData{
@NotNull
@Valid
@JsonProperty("MSG")
Message msg;
int code;
}