Skip to main content

Validation

Jazzy Framework provides a powerful and flexible validation system that allows you to validate request data easily.

Basic Validation

You can use the validator() method on the Request object to validate incoming data:

ValidationResult result = request.validator()
.field("name").required().minLength(3).maxLength(50)
.field("email").required().email()
.field("age").required().min(18).max(100)
.validate();

if (!result.isValid()) {
return response().json(
"status", "error",
"message", "Validation failed",
"errors", result.getAllErrors()
).status(400);
}

Available Validation Rules

Jazzy's validation system provides many common validation rules:

RuleDescription
required()The field must be present and not empty
email()The field must be a valid email address
min(value)The field must be greater than or equal to the given value
max(value)The field must be less than or equal to the given value
minLength(length)The field must have at least the given length
maxLength(length)The field must not exceed the given length
in(values...)The field must be one of the given values
notIn(values...)The field must not be one of the given values
pattern(regex)The field must match the given regular expression
pattern(regex, message)The field must match the given regular expression with a custom error message

Using Validation Rules Classes

For more complex validation requirements, you can create reusable validation rule classes:

public class UserCreateRules extends ValidationRules {

public UserCreateRules() {
field("name").required().minLength(3).maxLength(50);
field("email").required().email();
field("password").required().minLength(8)
.pattern("^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d).*$",
"Password must contain at least one uppercase letter, one lowercase letter, and one number");
field("role").in("admin", "user", "editor");
}
}

Then use them in your controller:

public Response createUser(Request request) {
ValidationResult result = request.validate(new UserCreateRules());

if (!result.isValid()) {
return response().json(
"status", "error",
"message", "Validation failed",
"errors", result.getAllErrors()
).status(400);
}

// Validation successful, continue processing...
}

Working with Validation Results

The ValidationResult class provides methods to work with validation results:

ValidationResult result = request.validator()
.field("name").required()
.field("email").required().email()
.validate();

// Check if validation passed
if (result.isValid()) {
// All fields are valid
}

// Get all errors
Map<String, List<String>> allErrors = result.getAllErrors();

// Get errors for a specific field
List<String> nameErrors = result.getErrors("name");

// Check if a specific field has errors
boolean hasEmailErrors = result.hasErrors("email");

Custom Validation Messages

You can provide custom validation messages for specific rules:

ValidationResult result = request.validator()
.field("username")
.required("A username is required")
.minLength(5, "Username must be at least 5 characters")
.field("age")
.required("Please provide your age")
.min(18, "You must be at least 18 years old")
.validate();

Next Steps

For more information about working with HTTP requests and responses, see: