Ajout de messages d'erreur de validation dans Spring-MVC
Je suis à l'aide de Spring-MVC et je voudrais faire des tests de validation dans le backend. Actuellement, je suis en mesure de réaliser les tests, rediriger correctement pour le lien. Mais je ne suis pas en mesure d'ajouter des messages d'erreur au cas où il y a un problème, par Exemple : "Prénom est vide". J'ai essayé d'utiliser le ValidationMessages_en_EN.fichier de propriétés dans WEB-INF, mais qui n'a pas aidé. Je vous poste mon code, merci de me faire savoir où je vais mal :
Contrôleur :
@Controller
public class PersonController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String listPersons(Model model) {
Person person = personService.getCurrentlyAuthenticatedUser();
if(!(person==null)){
return "redirect:/canvas/list";
} else {
model.addAttribute("person", new Person());
// model.addAttribute("listPersons", this.personService.listPersons());
model.addAttribute("notices",new Notes());
model.addAttribute("canvases",new Canvas());
return "person";
}
}
@RequestMapping(value= "/person/add", method = RequestMethod.POST)
public String addPerson(@Valid Person person,BindingResult bindingResult,@ModelAttribute("person") Person p,Model model){
if(bindingResult.hasErrors()){
return "redirect:/";
}
this.personService.addPerson(p);
return "redirect:/";
}
Entité :
@Entity
@Table(name="person")
public class Person implements UserDetails{
private static final GrantedAuthority USER_AUTH = new SimpleGrantedAuthority("ROLE_USER");
@Id
@Column(name="id")
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "person_seq_gen")
@SequenceGenerator(name = "person_seq_gen",sequenceName = "person_seq")
private int id;
@Valid
@NotEmpty @Email(message = "username.empty")
@Column(name = "username")
private String username;
@NotEmpty
@Column(name = "password")
private String password;
@Valid
@Size(min = 2,max = 30,message = "firstName.empty")
@Column(name = "firstname")
private String firstName;
@Valid
@Size(min = 2,max = 50)
@Column(name = "secretquestion")
private String secretquestion;
@Valid
@Size(min = 2,max = 500,message = "secretanswer.empty")
@Column(name = "secretanswer")
private String secretanswer;
Servlet-Context.xml
<beans:bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<beans:property name="basename" value="ValidatorMessages_en_EN.properties"/>
</beans:bean>
JSP/HTML :
<c:url var="addAction" value="/person/add" ></c:url>
<form:form action="${addAction}" commandName="person" method="post">
<table>
<c:if test="${!empty person.username}">
<tr>
<td>
<form:label path="id">
<spring:message text="ID"/>
</form:label>
</td>
<td>
<form:input path="id" readonly="true" size="8" disabled="true" />
<form:hidden path="id" />
</td>
</tr>
</c:if>
<tr>
<td>
<form:label path="firstName">
<spring:message text="FirstName"/>
</form:label>
</td>
<td>
<form:input path="firstName" />
</td>
<td><form:errors path="firstName"/>
</tr>
<tr>
<td>
<form:label path="username">
<spring:message text="Email"/>
</form:label>
</td>
<td>
<form:input path="username" />
</td>
<td><form:errors path="username"/>
</tr>
<tr>
<td>
<form:label path="password">
<spring:message text="Password"/>
</form:label>
</td>
<td>
<form:input path="password" />
</td>
<td><form:errors path="Password"/>
</tr>
<tr>
<td>
<form:label path="secretquestion">
<spring:message text="secretquestion"/>
</form:label>
</td>
<td>
<form:input path="secretquestion" />
</td>
<td><form:errors path="secretquestion"/>
</tr>
<tr>
<td>
<form:label path="secretanswer">
<spring:message text="secretanswer"/>
</form:label>
</td>
<td>
<form:input path="secretanswer" />
</td>
<td><form:errors path="secretanswer"/>
</tr>
POM.xml :
<!-- Validation -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.1.Final</version>
</dependency>
Messages.propriétés :
firstName=firstName
Email=Email
Password=password
secretquestion=secretquestion
secretanswer=secretanswer
NotEmpty.person.firstName=firstName is required!
NotEmpty.person.username=Email is required!
NotEmpty.person.password=Password is required!
NotEmpty.person.secretquestion=SecretQuestion is required!
NotEmpty.person.secretanswer=SecretAnswer is required!
Messages_en_US.propriétés
firstName=firstName
Email=Email
Password=password
secretquestion=secretquestion
secretanswer=secretanswer
NotEmpty.person.firstName=firstName is required!
NotEmpty.person.username=Email is required!
NotEmpty.person.password=Password is required!
NotEmpty.person.secretquestion=SecretQuestion is required!
NotEmpty.person.secretanswer=SecretAnswer is required!
Vous devez vous connecter pour publier un commentaire.
<spring:message text="FirstName"/>
Devrait être comme<spring:message code="FirstName"/>
essayer de remplacer texte en code dans votre<spring:message />
taget changement de nom de base de la valeur à ValidatorMessages et
en_US
Printemps ajoutera pour voussava votre fichier en tant que
ValidatorMessages_en_US.properties
dans votreresource
dossierValidatorMessages_en_US.properties
doit être présent que vous mettez en<beans:property name="basename" value="ValidatorMessages"/>
<beans:property name="basename" value="Messages"/>
Response
viennent?