どうかお手伝いできますか?Spring MVCを使ったHibernateバリデーターグループ
私はHibernateバリデータ/ Spring 3 MVCでグループの検証に問題があります。
私春-config.xmlので:
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
を検証するために、私のBeanがある:私の春コントローラで
package fr.test.front.form;
import javax.validation.constraints.Pattern;
import org.hibernate.validator.constraints.NotBlank;
import fr.test.front.constraints.ConstraintsProfessionnel;
import fr.test.front.constraints.FieldMatch;
@FieldMatch.List({
@FieldMatch(first = "password", second = "passwordConfirm", message = "Les mots de passe ne correspondent pas")
})
public class InfoPersoForm {
// Commons attributs
@NotBlank
private String clientType;
@Pattern(regexp = "(([\\w\\-\\.]+)([\\w]+))@((([\\w\\-]+\\.)+)([a-zA-Z]{2,4}))")
@NotBlank
private String email;
@Pattern(regexp = "[a-zA-Z0-9]*")
@NotBlank
private String password;
@NotBlank
private String passwordConfirm;
@NotBlank
private String civilite;
@NotBlank
private String nom;
@NotBlank
private String prenom;
@NotBlank
private String codePostal;
@NotBlank
private String offresCommerciales;
@NotBlank
private String offresCommercialesPartenaire;
// No Constraint
private String nomNaissance;
private String jourNaissance;
private String moisNaissance;
private String anneeNaissance;
// Attributs for professionnal
@NotBlank(groups = ConstraintsProfessionnel.class)
private String raisonSociale;
@NotBlank(groups = ConstraintsProfessionnel.class)
private String secteurActivite;
@NotBlank(groups = ConstraintsProfessionnel.class)
private String entiteeJuridique;
// getters and setters ...
}
、私はjavax.validationをキャスト。結果の制約をバインドするには、Validatorをorg.springframework.validation.Validatorに設定します。 、ここに私のinscriptionWebアクション
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
binder.setValidator((org.springframework.validation.Validator)validator);
}
::私は私の結果ビューでの検証のエラーを表示したい
@RequestMapping(value="inscriptionWeb", method = RequestMethod.POST)
public String createCompteInternetService(@ModelAttribute("infoPersoForm") @Valid InfoPersoForm infoPersoForm, BindingResult result, SessionStatus status, Model model) {
Set<ConstraintViolation<InfoPersoForm>> constraintViolations = validator.validate(infoPersoForm);
//printing the results
for (ConstraintViolation<InfoPersoForm> constraintViolation : constraintViolations) {
System.out.println(constraintViolation.getPropertyPath() + " -> " +
constraintViolation.getMessage() + " " + constraintViolation.getMessageTemplate());
}
System.out.println("");
System.out.println("----- Using Group -----");
System.out.println("");
constraintViolations = validator.validate(infoPersoForm, ConstraintsProfessionnel.class);
//printing the results
for (ConstraintViolation<InfoPersoForm> constraintViolation : constraintViolations) {
System.out.println(constraintViolation.getPropertyPath() + " -> " + constraintViolation.getMessage());
}
if(infoPersoForm.getClientType() != null && infoPersoForm.getClientType().equals(DonneesReferencesInvariantes.CLIENT_TYPE_PROFESSIONNEL_VALUE))
validator.validate(infoPersoForm, ConstraintsProfessionnel.class);
else
validator.validate(infoPersoForm);
if (result.hasErrors()) {
// return error view
}
else {
// return success view
}
}
最初の質問を、私は私の中で一つだけconstraintsProfessionnel(raisonSociale)を持っています検証グループの結果(私の結果のコンソールを参照してください)、なぜですか?
他のものはどこですか?constraintsProfessionnel(secteurActiviteおよびentiteeJuridique)? 彼らは私の制約エラーで何している:
19:29:42,128 INFO [STDOUT] codePostal -> ne peut pas être vide {org.hibernate.validator.constraints.NotBlank.message}
19:29:42,128 INFO [STDOUT] offresCommerciales -> ne peut pas être vide {org.hibernate.validator.constraints.NotBlank.message}
19:29:42,129 INFO [STDOUT] email -> doit suivre "(([\w\-\.]+)([\w]+))@((([\w\-]+\.)+)([a-zA-Z]{2,4}))" {javax.validation.constraints.Pattern.message}
19:29:42,129 INFO [STDOUT] email -> ne peut pas être vide {org.hibernate.validator.constraints.NotBlank.message}
19:29:42,129 INFO [STDOUT] passwordConfirm -> ne peut pas être vide {org.hibernate.validator.constraints.NotBlank.message}
19:29:42,129 INFO [STDOUT] prenom -> ne peut pas être vide {org.hibernate.validator.constraints.NotBlank.message}
19:29:42,129 INFO [STDOUT] offresCommercialesPartenaire -> ne peut pas être vide {org.hibernate.validator.constraints.NotBlank.message}
19:29:42,129 INFO [STDOUT] civilite -> ne peut pas être vide {org.hibernate.validator.constraints.NotBlank.message}
19:29:42,129 INFO [STDOUT] nom -> ne peut pas être vide {org.hibernate.validator.constraints.NotBlank.message}
19:29:42,129 INFO [STDOUT] password -> ne peut pas être vide {org.hibernate.validator.constraints.NotBlank.message}
19:29:54,803 INFO [STDOUT] ----- Using Group -----
19:29:54,812 INFO [STDOUT] codePostal -> ne peut pas être vide
19:29:54,812 INFO [STDOUT] offresCommerciales -> ne peut pas être vide
19:29:54,812 INFO [STDOUT] email -> doit suivre "(([\w\-\.]+)([\w]+))@((([\w\-]+\.)+
([a-zA-Z]{2,4}))"
19:29:54,812 INFO [STDOUT] email -> ne peut pas être vide
19:29:54,812 INFO [STDOUT] passwordConfirm -> ne peut pas être vide
19:29:54,812 INFO [STDOUT] prenom -> ne peut pas être vide
19:29:54,812 INFO [STDOUT] offresCommercialesPartenaire -> ne peut pas être vide
19:29:54,813 INFO [STDOUT] raisonSociale -> ne peut pas être vide
19:29:54,813 INFO [STDOUT] civilite -> ne peut pas être vide
19:29:54,813 INFO [STDOUT] nom -> ne peut pas être vide
19:29:54,813 INFO [STDOUT] password -> ne peut pas être vide
2番目の質問、私の結果オブジェクトはそうではない、なぜあなたは私を説明することができ、唯一のデフォルト制約はなく、ConstraintsProfessionnel(raisonSociale、secteurActiviteとentiteeJuridique)を持っていません私の結果のオブジェクトにありますか?