I use spring boot 3.3
I try to use JsonView
public class OrderView {
public static interface OrderOperationView {
public static interface General {
}
public static interface Process extends General {
}
}
}
I created a controller
@PostMapping("/accept/order")
public ResponseEntity<PrivateOrder> acceptProcess(@Valid @RequestBody @JsonView(value = OrderView.OrderOperationView.Process.class) OrderChoice orderChoice) {
return new ResponseEntity<>(orderService.acceptProcess(orderChoice), HttpStatus.OK);
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public class OrderChoice extends OrderDto {
@JsonView(value = {OrderView.OrderOperationView.General.class, OrderView.OrderOperationView.Process.class})
private boolean choiceSimilarOrder;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public class OrderDto {
@JsonView(value = {OrderView.OrderOperationView.General.class, OrderView.OrderOperationView.Process.class})
@NotNull
private Long orderId;
@JsonView(value = {OrderView.OrderOperationView.Process.class})
private TypeOrderEnum typeOrderEnum;
}
When I call the controller with this paylaod
{
"choiceSimilarOrder": true,
"orderId" : 1234,
"typeOrderEnum": "COMMERCIAL"
}
I get a 404
but with this one
{
"choiceSimilarOrder": true,
"orderId" : 1234,
}
that ok
In the controller i specified the view Process, so typeOrderEnum will should pass