[JAVA] Modifier le message de validation Spring Boot

introduction

C'est un mémorandum pour changer le message lorsque le contrôle de validation est effectué avec annotation dans le démarrage du ressort

Informations environnementales

Spring Boot 1.5.4(Maven)

La source

Créer un contrôleur, un formulaire, une vue

LoginController.java


@Controller
@RequestMapping({"/", "/login"})
public class LoginController extends BaseController {

	@ModelAttribute
	public LoginForm initForm(){
		return new LoginForm();
	}

	@RequestMapping(value = {"/index", "/"}, method = RequestMethod.GET)
	public String index(Model model){
		return "test/index";
	}

	@RequestMapping(value = "/login", method = RequestMethod.POST)
	public String login(@ModelAttribute @Validated TestForm form, BindingResult result, Model model)
	{
		if(result.hasErrors()){
			return "test/index";
		}

		//Processus de connexion
		......

		return "redirect:/menu/index";
	}
}

LoginForm.java


public class LoginForm extends BaseForm {

	@NotEmpty
	public String userId;
	@NotEmpty
	public String password;

	/*Getter pour une utilisation avec thymeleaf/besoin de setter*/
	public String getUserId() {
		return userId;
	}
	public void setUserId(String userId) {
		this.userId = userId;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}

}

login/index.html


<!DOCTYPE html>
<html
	xmlns        = "http://www.w3.org/1999/xhtml"
	xmlns:th     = "http://www.thymeleaf.org"
	xmlns:layout = "http://www.ultraq.net.nz/thymeleaf/layout"
	layout:decorator="layout"
>
<head>
	<title>S'identifier</title>
</head>
<body>
	<div layout:fragment="contents">
		<form class="form-horizontal" method="POST" action="/login/login/" th:action="@{/login/login}" th:object="${loginForm}">
			<div class="form-group">
				<p th:if="${#fields.hasErrors('*{userId}')}" th:errors="*{userId}" class="col-sm-offset-2 text-danger"></p>
				<label for="user-id" class="col-sm-2 control-label">Identifiant d'utilisateur</label>
				<div class="col-sm-5">
					<input type="text" class="form-control" id="user-id" th:field="*{userId}" placeholder="Identifiant d'utilisateur" />
				</div>
			</div>
			<div class="form-group">
				<p th:if="${#fields.hasErrors('*{password}')}" th:errors="*{password}" class="col-sm-offset-2 text-danger"></p>
				<label for="password" class="col-sm-2 control-label">mot de passe</label>
				<div class="col-sm-5">
					<input type="password" class="form-control" id="password" th:field="*{password}" placeholder="mot de passe" />
				</div>
			</div>
			<div class="form-group">
				<input type="submit" class="btn btn-primary col-sm-2 col-sm-offset-2" name="login" value="S'identifier" />
				<input type="reset" class="btn btn-default col-sm-2 col-sm-offset-1" name="clear" value="clair" />
			</div>
		</form>
	</div>
</body>
</html>

Ensuite, créez une classe qui hérite de WebMvcConfigurerAdapter Il semble que le message ne prend pas en charge UTF-8 par défaut, donc Réglez l'encodage sur UTF-8

AppConfigurerAdapter.java


@Configuration
public class AppConfigurerAdapter extends WebMvcConfigurerAdapter {

	@Bean(name="validator")
	public LocalValidatorFactoryBean localValidatorFactoryBean() {
		LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
		localValidatorFactoryBean.setValidationMessageSource(messageSource());
		return localValidatorFactoryBean;
	}

	/**
	 *Message de validation UTF-Gérez avec 8.
	 * @return
	 */
	@Bean(name = "messageSource")
	public MessageSource messageSource()
	{
		ReloadableResourceBundleMessageSource bean = new ReloadableResourceBundleMessageSource();
		bean.setBasename("classpath:ValidationMessages");
		bean.setDefaultEncoding("UTF-8");
		return bean;
	}

}

Ensuite, créez un fichier de propriétés qui décrit le message de validation directement sous le dossier resource. Le nom de fichier doit être le nom de fichier spécifié dans ʻAppConfigurerAdapter.java`. La clé du message spécifie le nom complet de l'annotation. Le nom du champ est entré dans «{0}» du message Si vous souhaitez donner un alias au nom du champ, définissez également le nom du champ

ValidationMessages.properties


#message
org.hibernate.validator.constraints.NotEmpty.message={0}Entrez s'il vous plait.

#Nom de domaine
userId=Identifiant d'utilisateur
password=mot de passe

Essayez de courir

Ceci est le résultat d'une pression sur le bouton de connexion sans entrer l'ID utilisateur et le mot de passe sur l'écran de connexion. login.png

Recommended Posts

Modifier le message de validation Spring Boot
Changements majeurs dans Spring Boot 1.5
Sortie de message (Spring boot)
Obtenez des résultats de validation avec Spring Boot
La coopération des messages a commencé avec Spring Boot
[Introduction à Spring Boot] Vérification de la validation du formulaire
Défi Spring Boot
Modifications lors de la migration de Spring Boot 1.5 vers Spring Boot 2.0
Modifications lors de la migration de Spring Boot 2.0 vers Spring Boot 2.2
Forme de botte de printemps
Spring Boot Rappelez-vous
gae + botte à ressort
Test de validation de classe de formulaire avec Spring Boot
[FCM] Implémentation de la transmission de messages en utilisant FCM + Spring boot
[Java] Article pour ajouter une validation avec Spring Boot 2.3.1.
Fiche d'apprentissage SPRING BOOT 01
Botte de printemps + Heroku Postgres
Rédaction de mémo de démarrage de printemps (1)
Première botte à ressort (DI)
Aide-mémoire Spring Boot2
Mappage du servlet Spring Boot
Procédure d'apprentissage Spring Boot
Rédaction de mémos de démarrage de printemps (2)
[Spring Boot] DataSourceProperties $ DataSourceBeanCreationException
Validation personnalisée avec Spring
Disponibilité de l'application Spring Boot 2.3
Tutoriels Spring Boot Sujets
Télécharger avec Spring Boot
La coopération des messages a commencé avec l'édition Spring Boot Apache Kafka
[JUnit 5] Ecrivez un test de validation avec Spring Boot! [Test de paramétrage]
[Spring Boot] Construction de l'environnement (macOS)
Définir le paramètre contextuel dans Spring Boot
Essayez Spring Boot de 0 à 100.
Générer un code à barres avec Spring Boot
Validation du ressort et code d'erreur
Hello World avec Spring Boot
Spring Boot sur Microsoft Azure
Implémenter GraphQL avec Spring Boot
Démarrez avec Spring Boot
[Spring Boot] Validation du déplacement (@Validated / @Valid) à tout moment [BeanValidation]
Bonjour tout le monde avec Spring Boot!
Multi-projets Spring Boot 2 avec Gradle
[Spring Boot] Création d'applications Web
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Paramètres d'échange à chaud Spring Boot
[Java] Thymeleaf Basic (Spring Boot)
Introduction à Spring Boot ① ~ DI ~
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Application Java CICS-Run - (4) Application Spring Boot
Spring Boot à partir de Docker
Spring Boot + Springfox springfox-boot-starter 3.0.0 Utilisation
Conseils relatifs à Spring Boot DB
Hello World avec Spring Boot
Définir des cookies avec Spring Boot
[Spring Boot] Recette de processus de pagination facile
Utiliser Spring JDBC avec Spring Boot
Construction de l'environnement Docker × Spring Boot
Ajouter un module avec Spring Boot