Monday 29 March 2021

Bean validation: Digits: Number must be within accepted range

 

If you add @Digits annotation on any number, then the number must be within accepted range.

 

Example

@Digits(integer = 9, fraction = 2)

private double salary;

 

What are the supported types?

a.   byte

b.   short

c.    int

d.   long

e.   Byte

f.     Short

g.   Integer

h.   Long

i.     BigDecimal

j.     BigInteger

k.    CharSequence

 

Note: As per specification double, float is not supported due to rounding errors. Some providers may provide some approximative support

 

Where can I apply this annotation?

a.   METHOD,

b.   FIELD,

c.    ANNOTATION_TYPE,

d.   CONSTRUCTOR,

e.   PARAMETER,

f.     TYPE_USE

 

Find the below working application.

 

Employee.java

package com.sample.model;

import javax.validation.constraints.Digits;

public class Employee {

	private int id;

	private String name;

	/*
	 * numeric value out of bounds (<9 digits>.<2 digits> expected)
	 */
	@Digits(integer = 9, fraction = 2)
	private double salary;

	public Employee(int id, String name, double salary) {
		this.id = id;
		this.name = name;
		this.salary = salary;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public double getSalary() {
		return salary;
	}

	public void setSalary(double salary) {
		this.salary = salary;
	}

}

 

Test.java

package com.sample.test;

import java.util.Set;

import javax.validation.*;
import javax.validation.ValidatorFactory;

import com.sample.model.Employee;

public class Test {
	private static ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
	private static Validator validator = validatorFactory.getValidator();

	private static void validateBean(Employee emp) {
		System.out.println("************************************");
		Set<ConstraintViolation<Employee>> validationErrors = validator.validate(emp);

		if (validationErrors.size() == 0) {
			System.out.println("No validation errors....");
		}

		for (ConstraintViolation<Employee> violation : validationErrors) {
			System.out.println(violation.getPropertyPath() + "," + violation.getMessage());
		}
		System.out.println("");
	}

	public static void main(String args[]) {

		Employee emp1 = new Employee(1, "Krishna", 1234567890);
		System.out.println("Validation errors on bean emp1");
		validateBean(emp1);

		Employee emp2 = new Employee(2, "Siva", 23456789.23);
		System.out.println("Validation errors on bean emp2");
		validateBean(emp2);
	}
}

Output

Validation errors on bean emp1
************************************
salary,numeric value out of bounds (<9 digits>.<2 digits> expected)

Validation errors on bean emp2
************************************
No validation errors....

 

 

Previous                                                    Next                                                    Home

No comments:

Post a Comment