Вы можете использовать параметр groups в аннотациях JSR303.
@ NotEmpty аннотация применяется при доступе через интерфейс «Существующий»:
public class Greeting {
private final long id;
@NotEmpty(groups = Existing.class)
private final String content;
public Greeting(long id, String content) {
this.id = id;
this.content = content;
}
public long getId() {
return id;
}
public String getContent() {
return content;
}
public interface Existing {
}
}
Примечание @Validated(Existing.class)
аннотация на PutMapping
@PostMapping("/greeting")
public Greeting newGreeting( @RequestBody Greeting gobj) {
return new Greeting(counter.incrementAndGet(),
String.format(template, gobj.getContent()));
}
@PutMapping("/greeting")
public Greeting updateGreeting(@Validated(Existing.class) @RequestBody Greeting gobj) {
return new Greeting(gobj.getId(),
String.format(template, gobj.getContent()));
}
Для приведенного выше примера тело Json {"id": 1}
будет работать для POST, но для PUT вы получите HTTP 400, сообщающий, что «параметр содержимого не должен быть пустым».{"id": 1, "content":"World"}
будет принято для обоих методов.