2016-03-16 3 views
0

Давайте идти прямо на занятия Person.javaSpring MVC проверки с аннотацией не работает во вложенных полях

public class Person { 

    @Size(min=4, max=10) 
    private String name; 

    @Range(min=0, max=80) 
    private Integer age; 

    @NotEmpty 
    private String address; 

    @Pattern(regexp="^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$") 
    private String email; 

    @Past 
    private Date birth; 

    private Pet pet; 
... 
} 

и Pet.java

public class Pet { 

    @NotEmpty 
    public String name; 
    @NotEmpty 
    public Integer age; 
... 
} 

и это моя форма

<form:form action="enter" method="post" commandName="personForm"> 
name: <form:input path="name"/>  <form:errors path="name" />  <br/> 
age: <form:input path="age"/>  <form:errors path="age" />  <br/> 
address:<form:input path="address"/> <form:errors path="address" /> <br/> 
email: <form:input path="email"/>  <form:errors path="email" /> <br/> 
birth: <form:input path="birth"/>  <form:errors path="birth" /> <br/> 
petName:<form:input path="pet.name"/> <form:errors path="pet.name" /> <br/> 
petAge: <form:input path="pet.age"/> <form:errors path="pet.age" /> <br/> 
<input type="submit" value="Register"/> <br/> 
</form:form> 

Код работает хорошо и показывает сообщение в форме: error .. block, когда введены недопустимые значения, за исключением случаев, когда речь идет о домашних животных Имя и petAge.

Собственно, код не подтверждает petName и petAge вообще. Я использую валидатор спящего режима. Может ли кто-нибудь сказать мне, как это решить?

ответ

1

Попробуйте добавить javax.validation.Valid аннотация наверх pet.

public class Person { 

    @Size(min=4, max=10) 
    private String name; 

    @Range(min=0, max=80) 
    private Integer age; 

    @NotEmpty 
    private String address; 

    @Pattern(regexp="^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$") 
    private String email; 

    @Past 
    private Date birth; 

    @Valid // This line 
    private Pet pet; 

} 
+0

Смотрите также это [пример] (http://docs.jboss.org/hibernate/validator/4.1/reference/en-US/html/validator-usingvalidator.html#d0e410) – nnunes10

+0

Спасибо, ребята , Действительно полезно! –

Смежные вопросы