2016-03-16 58 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。 我正在使用hibernate驗證器。有人能告訴我如何解決這個問題?

回答

1

嘗試在pet的頂部添加javax.validation.Valid註釋。

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

謝謝你,夥計們。真的有幫助! –