5

Bazı JSR-303 doğrulayıcı açıklama ile model bir nesne yapmak:@ bahar mvc'de yinelemeli olarak alanlarla ilgili Ek açıklamaları kontrol edebilir mi?

public class UserInfoBasicModel implements Serializable{ 
    @NotNull(message="cannot be null") 
    @NotEmpty(message="cannot be empty") 
    private String name; 
    //getter and setter 
    //..ignored.. 
} 

Otomatik bir kontrolöre veri bağlama:

@Controller 
@RequestMapping("/user") 
public class UserController { 
    @RequestMapping(method = RequestMethod.POST, value = "/registry/") 
    public String registry(HttpServletRequest request, 
      ModelMap modelMap, 
      @Valid UserInfoBasicModel userInfoBasicModel, 
      BindingResult result) { 
     //...some code here... 
    } 
} 

Yukarıdaki senaryoda, doğrulama için iyi çalışır. Sadece aşağıdaki gibi başka bir nesne içinde bir model saklanması Fakat UserInfoBasicModel üzerinde doğrulama artık çalışmıyor:

UserInfoBasicModel nesnesi kapsüller Nesne:

public static class UserUpdateFormTransmitter  { 
    @Valid 
    private UserInfoBasicModel userInfoBasicModel; 
    //getter and setter 
    //..ignored.. 
} 

kontrolör:

@Controller 
@RequestMapping("/user") 
public class UserController { 
    @RequestMapping(method = RequestMethod.POST, value = "/registry/") 
    public String registry(HttpServletRequest request, 
      ModelMap modelMap, 
      @Valid UserUpdateFormTransmitter userUpdateFormTransmitter, 
      BindingResult result) { 
     //...some code here... 
    } 
} 

@id annotaion neden yinelemeli olarak çalışmıyorum merak ediyorum ne gibi JSR 303: Bean Validation söyler. Herhangi biri bana bir çözüm verir, böylece nesneyi yinelemeli olarak geçerli olabilir, çok teşekkürler !!

+0

Belki ikinci geçerli atlanabilir? İlk Valid, tüm model boyunca kademelendirilmelidir. – tstorms

+0

İlkbahar 3.2.4.RELEASE ile çok benzer bir şey yapıyorum ve '@ Valid'' i ekleyerek 'UserUpdateFormTransmitter' içindeki' userInfoBasicModel 'değerine eşdeğimi ekledim. Bu olmadan, iç içe doğrulama onaylandı. –

cevap

3

Hiçbir zaman yinelemeli doğrulama yapmamıştım, ancak this'a göre alt nesneleri @Valid ile etiketlemek mümkün.

0

Fikrimi söyleyeyim:

aşağıda gibi ModelAttribute kullanarak 1.Try:

Java dosyası:

@RequestMapping(method = RequestMethod.POST, value = "/registry/") 
public String registry(HttpServletRequest request, 
      ModelMap modelMap, 
      @ModelAttribute("userupdate") @Valid UserUpdateFormTransmitter userUpdateFormTransmitter, 
      BindingResult result) 

JSP:

<form:form method="POST" name="form1" action="/registry" modelAttribute="userupdate"> 

2.Ensure kullanmakta olduğunuz yol özniteliği

yerine 10

<form:input type="text" id="name" value="${userInfoBasicModel.name}" /> 
İlgili konular