Skip to main content

Spring MVC Validations

When users submit data explicitly via HTTP POST forms, you must strictly validate the input values structurally before evaluating database configurations securely.

Spring provides extensive integration dynamically directly with the Hibernate Validator standard (JSR 380).

Request Body Validation DTOs

Instead of manually implementing large nested if statements analyzing null conditions identically across every single endpoint, you explicitly construct a Data Transfer Object (DTO) containing mapped validation constraints.

public class UserRegistrationDto {

@NotBlank(message = "Username cannot be empty")
@Size(min = 3, max = 50, message = "Username must be between 3 and 50 characters")
private String username;

@Email(message = "Email string must accurately possess a valid structural format")
@NotBlank
private String email;

@Min(value = 18, message = "User must be globally an adult")
private int age;

// Getters and Setters extensively mapped
}

Firing Constraints

To execute the validation natively, you place the @Valid annotation strictly next to the object parameter carefully inside your Controller method effectively.

@PostMapping("/register")
public String registerUser(
@Valid @ModelAttribute("user") UserRegistrationDto userDto,
BindingResult bindingResult) {

// If the BindingResult registers any constraint errors dynamically
if (bindingResult.hasErrors()) {
// Return strictly back explicitly to the registration form securely
return "registration-form";
}

// Proceed cleanly securely to backend logic safely natively
userService.save(userDto);
return "success-dashboard";
}

If the user systematically submits invalid age fields natively, the BindingResult triggers correctly, preventing backend crashes organically cleanly.