java 103 lines · 3 tabs

Validation with Bean Validation API

David Kumar Jan 2026
3 tabs
package com.example.demo.dto;

import com.example.demo.validation.UniqueEmail;
import jakarta.validation.constraints.*;
import lombok.Data;

@Data
public class CreateUserRequest {

    @NotBlank(message = "Name is required")
    @Size(min = 2, max = 100, message = "Name must be between 2 and 100 characters")
    private String name;

    @NotBlank(message = "Email is required")
    @Email(message = "Invalid email format")
    @UniqueEmail
    private String email;

    @Pattern(regexp = "^\+?[1-9]\d{1,14}$", message = "Invalid phone number")
    private String phone;

    @Min(value = 18, message = "Must be at least 18 years old")
    @Max(value = 120, message = "Age cannot exceed 120")
    private Integer age;

    @AssertTrue(message = "Must accept terms and conditions")
    private Boolean termsAccepted;
}
3 files · java Explain with highlit

Bean Validation (JSR 380) validates objects using annotations. Common constraints include @NotNull, @NotBlank, @Size, @Email, @Min, @Max, and @Pattern. I apply annotations to fields, methods, or parameters. @Valid triggers validation in Spring controllers. Custom validators extend ConstraintValidator for business rules. Groups enable conditional validation. ConstraintViolation contains error details. Validation happens before data reaches service layer, ensuring data integrity. Spring's @Validated supports method-level validation in services. Error messages are customizable via properties files or annotation parameters. Validation prevents invalid data from persisting, reducing bugs and improving security. The declarative approach keeps validation logic close to domain models.


Related snips

graphql
type User {
    id: ID!
    name: String!
    email: String!
    posts: [Post!]!
    createdAt: String!

GraphQL API with Spring Boot

java graphql spring-boot
by David Kumar 3 tabs
ruby
class SignupForm
  include ActiveModel::Model
  include ActiveModel::Attributes

  attribute :account_name, :string
  attribute :email, :string

Shallow Controller, Deep Params: Form Object Pattern

rails activemodel form-object
by codesnips 3 tabs
java
package com.example.starter.config;

import com.example.starter.properties.CustomProperties;
import com.example.starter.service.CustomService;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;

Custom Spring Boot starters

java spring-boot starter
by David Kumar 4 tabs
html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Form Validation Example</title>
  <style>

HTML forms with validation and accessibility

html forms validation
by Alex Chang 1 tab
java
package com.example.demo.config;

import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.serialization.StringDeserializer;
import org.apache.kafka.common.serialization.StringSerializer;

Messaging with Apache Kafka

java kafka messaging
by David Kumar 3 tabs
typescript
import axios from 'axios';

export type NormalizedErrors = {
  fields: Record<string, string>;
  formLevel: string | null;
};

Frontend: normalize and display server validation errors

ux typescript react
by codesnips 3 tabs

Share this code

Here's the card — post it anywhere.

Validation with Bean Validation API — share card
Link copied