В springboot, как переименовать поля данных формы при сопоставлении с помощью @ModelAttribute?

#java #spring-boot #spring-annotations

Вопрос:

Я работаю с spring-boot, в моем контроллере я получаю данные формы. Я сопоставляю запрос с POJO, используя атрибут @ModelAttribute, однако имена данных формы неоднородны. В этом случае @JsonProperty не помогает. Я искал какую-нибудь аннотацию или способ, чтобы я мог переименовать эти поля во время сопоставления.

Образец завитка-

 curl --location --request POST 'http://localhost:8080/api/demo' 
--header 'Authorization: Bearer ' 
--form 'deviceID="123"' 
--form 'ASN="123"' 
--form 'portal="demoportal"' 
--form 'str_ScanData=@"/D:/sample.xml"'
 

Мой образец контроллера-

  @PostMapping(path = "/demo", consumes = {"multipart/form-data"}) public ResponseEntity<demoDto> demoController(
@ModelAttribute DemoRequest demoRequest)
 

Мой POJO для запроса —

 Class DemoRequest {
// what i have right now
   private String deviceID;
    private String ASN;
    private String portal;
    private MultipartFile str_ScanData;
// getter setters constructor

// What I want to have
   private String deviceId; //camelcase
    private String asn; //rename
    private String portal;
    private MultipartFile uploadedFile; //rename
}
 

Я новичок в использовании форумов и весенней загрузки. Пожалуйста, дайте мне знать, если я нахожусь на неверном пути или не опубликовал никакой соответствующей информации.

Комментарии:

1. Поскольку an @ModelAttribute используется исключительно для привязки веб-формы к контроллеру, я просто точно воспроизвел атрибуты формы, даже если имена свойств не являются стандартными для Java, чтобы точно отразить содержимое формы. Я считаю, что для изменения имен потребуется специальная папка.

2. Вы сохраняете свой dto, сопоставляя поля формы и используя @Column или JsonProperty в классе сущностей.

3. Спасибо @chrylis-осторожно оптимистично — я бы оставил его с тем же именем, что и данные формы, но мой сонар продолжает звонить :D. Поэтому я подумал , что должен быть какой-то способ.

4. Я бы сказал, что это конкретный случай, когда подавление предупреждений сонара оправдано.

5. @Alien Я хотел в основном переименовать поля в моем dto, так как поля формы несовместимы.