如果我在spring boot中有以下dto
public class PersonDto {
@JsonProperty(access = Access.READ_ONLY)
private Long id;
@NotBlank
private String name;
//@NotNull
@JsonProperty(access = Access.READ_ONLY)
private Integer age;
}
我想按照这个标准执行一个http补丁,这个标准是由jsonpatch库实现的,我会写这样的东西来获得补丁的jsonnode
JsonNode patched = patch.apply(objectMapper.convertValue(target, JsonNode.class));
但是,在执行以下修补程序操作时 @JsonProperty(access = Access.READ_ONLY)
不会产生任何影响(意味着年龄将设置为12岁)
[ {"op":"replace","path":"/age","value": 12} ]
后来我也试过以下方法
return objectMapper.treeToValue(patched, PersonDto.class)
但这里的年龄设置为空
因此,我希望实现的预期行为如下:
每当我收到一个试图替换'age'值的修补程序操作时,我希望该操作被忽略,因为age是只读的。
我知道我可以在控制器中创建if语句来检查每个补丁操作,如果它试图更改一个我想像age一样是只读的字段,则忽略它,但我更愿意使用jackson注解来执行此操作。这可能吗?
我确实遵循了这个教程,以防你想看看它
暂无答案!
目前还没有任何答案,快来回答吧!