首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pojo验证的Spring Boot Pojo不工作

Pojo验证的Spring Boot Pojo不工作
EN

Stack Overflow用户
提问于 2020-04-18 10:33:39
回答 1查看 2.1K关注 0票数 0

在我的spring引导应用程序中有两个Pojo。

Pojo 1: FeedData

代码(我已经设置了get和set,只是在这里没有显示):

代码语言:javascript
复制
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;


}

..in上面的pojo,还有另一个名为FeedDataJson的Pojo,它具有有效性。

代码2: FeedDataJson Pojo

代码语言:javascript
复制
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;
}

每当我通过邮递员发送请求时,FeedDataJson Pojo中就不会出现验证。

抽样请求数据:

代码语言:javascript
复制
{
    "feed_data_json":{
        "feed_title":"",
        "feed_body":"LOL",
        "feed_meta_tags":["m1"]
    },
    "feed_category_id":1,
    "user_profile":{
        "user_id":1
    }
}

--这会引发验证错误,因为feed_title是空的,对吗?

我的控制器代码:

代码语言:javascript
复制
@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);
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-18 10:41:16

feedDataJson属性的FeedData类中使用@Valid。

代码语言:javascript
复制
@Valid
private FeedDataJson feedDataJson;

对于嵌套属性,还需要使用@Valid。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61287691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档