Spring Boot Pojo из проверки Pojo не работает - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть два Pojo в моем весеннем загрузочном приложении

Pojo 1: FeedData

Код (у меня есть get и set, я просто не показывал его здесь):

package com.cms.tb.model;

import java.io.Serializable;

import javax.validation.constraints.NotBlank;

import com.fasterxml.jackson.annotation.JsonProperty;

public class FeedData implements Serializable{

    @JsonProperty("feed_id")
    private int feedId;

    @JsonProperty("feed_category_id")
    private int feedCategoryId;

    @JsonProperty("feed_data_json")
    private FeedDataJson feedDataJson;

    @JsonProperty("user_profile")
    private UserProfile userProfile;


}

.. в приведенном выше pojo есть еще одно Pojo под названием FeedData Json, которое имеет проверки.

Код 2: FeedData Json Pojo

package com.cms.tb.model;

import java.util.List;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;

import com.fasterxml.jackson.annotation.JsonProperty;

public class FeedDataJson {

    @NotBlank(message = "feed_title is Mandatory")
    @Size(min = 4, max = 25, message 
    = "feed_title must be between 4 and 25 characters")
    @JsonProperty("feed_title")
    private String feedTitle;

    @NotBlank(message = "feed_body is Mandatory")
    @Size(min = 4, max = 2000, message 
    = "feed_body must be between 10 and 2000 characters")
    @JsonProperty("feed_body")
    private String feedBody;

    @JsonProperty("feed_meta_tags")
    private List<String> feedMetaTags;
}

всякий раз, когда я отправить запрос через POSTMAN, там нет проверки в FeedData Json Pojo.

пример данных запроса:

{
    "feed_data_json":{
        "feed_title":"",
        "feed_body":"LOL",
        "feed_meta_tags":["m1"]
    },
    "feed_category_id":1,
    "user_profile":{
        "user_id":1
    }
}

Это должно вызвать ошибку проверки, поскольку feed_title пусто, верно?

мой код контроллера:

@PostMapping(path="/v1/createfeed")
    public ResponseEntity<String> createFeedController(@Valid @RequestBody FeedData requestData)
            throws TBFeedException, TBFeedDBException, JsonProcessingException {

        // Create ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        mapper.enable(SerializationFeature.INDENT_OUTPUT);

        String feedDataJson = mapper.writeValueAsString(requestData.getFeedDataJson());
        FeedData newFeedInfo = ITBFeedDAO.createFeed(requestData,feedDataJson);
        newFeedInfo.setFeedDataJson(requestData.getFeedDataJson());

        JsonNode dataNode = mapper.valueToTree(newFeedInfo);

        return new ResponseEntity<String>(generateResponse(dataNode), setHeaders(), HttpStatus.OK);
    }

1 Ответ

1 голос
/ 18 апреля 2020

Используйте @Valid для feedDataJson Propertry в FeedData классе.

@Valid
private FeedDataJson feedDataJson;

Для вложенного свойства вам также необходимо использовать @Valid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...