[英]Spring Boot Pojo of Pojo validation not working
我的 spring 啟動應用程序中有兩個 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 中,還有另一個名為 FeedDataJson 的 Pojo 具有驗證功能。
代碼 2:FeedDataJson 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 發送請求時,FeedDataJson Pojo 中都不會發生驗證。
樣品請求數據:
{
"feed_data_json":{
"feed_title":"",
"feed_body":"LOL",
"feed_meta_tags":["m1"]
},
"feed_category_id":1,
"user_profile":{
"user_id":1
}
}
這應該會引發驗證錯誤,因為 feed_title 是空的,對吧?
我的 Controller 代碼:
@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);
}
在feedDataJson
class 中的FeedData
屬性上使用 @Valid。
@Valid
private FeedDataJson feedDataJson;
對於嵌套屬性,您還需要使用 @Valid。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.