ほとんどの場合、開発者は投稿されたオブジェクトまたは新しいオブジェクトを検証するため@Valid
に とを使用します。BindingResult
たとえば、次のコードでは、注釈を介してCategoryオブジェクトを検証し、@Valid
その結果を にバインドしBindingResult
ます。ただし、これらの手順はすべてSpring
自動的に行われます。
@PostMapping
public String saveCategory(@Valid Category category, BindingResult bindingResult)
{
// if there are some errors
if (bindingResult.hasErrors())
{
for (ObjectError objectError : bindingResult.getAllErrors())
{
System.out.println(objectError.getDefaultMessage());
}
}
...
}
上記のコード スニペットは Spring の優れた利点の 1 つですが、他のレイヤーでも同じ動作が必要になる場合があります。したがって、BindingResult の実装された形式のインスタンスを取得し、バリデーターをコードに挿入する必要があります。
...
import org.springframework.validation.Validator;
...
@Service
public class CategoryService
{
@Autowired
private Validator validator;
...
private void insertNewCategory(Category category)
{
BindingResult bindingResult = new BeanPropertyBindingResult(category, "objectName");
validator.validate(category, bindingResult);
if(bindingResult.hasErrors())
{
for (FieldError fieldError : bindingResult.getFieldErrors())
{
System.out.println(fieldError.getDefaultMessage());
}
}
....
}
}