Skip to content

Instantly share code, notes, and snippets.

View alexchirea's full-sized avatar
🎯
Focusing

Alex Chirea alexchirea

🎯
Focusing
View GitHub Profile
implementation 'com.fasterxml.jackson.module:jackson-module-kotlin:2.12.1'
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
<version>2.12.1</version>
</dependency>
@CustomGoogleEmailConstraint
private String email;
public class CustomGoogleEmailValidator implements ConstraintValidator<CustomGoogleEmailConstraint, String> {
@Override
public void initialize(CustomGoogleEmailConstraint email) { }
@Override
public boolean isValid(String email, ConstraintValidatorContext constraintValidatorContext) {
return email != null && email.matches("^[a-zA-Z0–9.]+@gmail.com");
}
}
@Documented
@Constraint(validatedBy = CustomGoogleEmailValidator.class)
@Target({ ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomGoogleEmailConstraint {
String message() default "The email must have \"@gmail.com\" extension";
Class[] groups() default {};
Class[] payload() default {};
}
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.10.Final</version>
</dependency>
@NotEmpty(message = "The Full Name can't be null")
@Size(min = 5, message = "{Size.Person.FullName}")
private String fullName;
<div class="alert alert-warning" th:if="${#fields.hasErrors('age')}" th:errors="*{age}"></div>
@GetMapping("/add")
public String showAddPersonForm(Person person) {
return "add-person";
}
@PostMapping("/add")
public String addPerson(@Valid Person person, BindingResult result, Model model) {
if (result.hasErrors()) {
return "add-person";
}
@Repository
public interface PersonRepository extends JpaRepository<Person, Long> { }