2012-12-20 22 views
0

我有一个表employee,它有departmentaddress作为它的属性。我想使用JSR 300验证address类的属性。但是我有验证地址和部门类的属性的问题。到目前为止,只有Employee类的属性正在验证中。我错过了什么吗?Spring mvc:作为另一个类验证属性的对象JSR 300

public class Employee { 

    private Integer id; 
    @NotEmpty(message = "First Name must not be blank.") 
    @Size(min = 1, max = 50) 
    private String firstName; 

    @NotEmpty(message = "Last Name must not be blank.") 
    @Size(min = 1, max = 50) 
    private String lastName; 

    @Digits(message = "Salary field must not be blank.", integer=32767, fraction = 2) 
    @NumberFormat(style = Style.NUMBER) 
    @NotNull(message = "Salary field must not be blank.") 
    private Double salary; 

    @Digits(message = "Select department", integer=100, fraction = 0) 
    @NumberFormat(style = Style.NUMBER) 
    @NotNull(message = "Select department") 
    private Integer dept_id; 

    @NotEmpty(message = "Select gender") 
    private String gender; 
    private boolean employeeStatus; 
    private Address address; 
    private Department department; 
} 

public class Address { 

    private Integer id; 

    @NotEmpty(message = "Country must not be blank.") 
    @Size(min = 1, max = 50) 
    private String country; 

    @NotEmpty(message = "City must not be blank.") 
    @Size(min = 1, max = 50) 
    private String city; 

    @NotEmpty(message = "Street must not be blank.") 
    @Size(min = 1, max = 50) 
    private String street; 
    private Integer emp_id; 

    } 

public class Department { 

    private String name; 
    private Integer id; 

} 

JSP

<form:form commandName="employee" action="addEmployee.htm" 
      name="employeeForm"> 
      <form:errors path="*" cssClass="errorblock" element="div" /> 
      <fieldset> 
       <form:label path="firstName">First Name</form:label> 
       <form:input path="firstName" /> 
       <form:errors path="firstName" cssClass="error" /> 
       <br> 

       <form:label path="lastName">Last Name</form:label> 
       <form:input path="lastName" /> 
       <form:errors path="lastName" cssClass="error" /> 
       <br> 

       <form:label path="address.country">Country</form:label> 
       <form:input path="address.country" /> 
       <form:errors path="address.country" cssClass="error" /> 
       <br> 

       <form:label path="address.city">City</form:label> 
       <form:input path="address.city" /> 
       <form:errors path="address.city" cssClass="error" /> 
       <br> 

       <form:label path="address.street">Street</form:label> 
       <form:input path="address.street" /> 
       <form:errors path="address.street" cssClass="error" /> 
       <br> 

       <form:label path="salary">Salary</form:label> 
       <form:input path="salary" /> 
       <form:errors path="salary" cssClass="error" /> 
       <br> 

       <form:label path="gender">Gender</form:label> 
       <form:radiobutton path="gender" value="Male" /> 
       Male 
       <form:radiobutton path="gender" value="Female" /> 
       Female 
       <form:errors path="gender" cssClass="error" /> 

       <form:label path="dept_id">Department</form:label> 

       <form:select path="dept_id"> 
        <form:option value="" label="Please Select"></form:option> 
        <form:options items="${departmentList}" itemValue="id" 
         itemLabel="name" /> 
       </form:select> 
       <form:errors path="dept_id" cssClass="error" /> 

       <label></label><input type="submit" value="Add Employee"><br> 
      </fieldset> 


     </form:form> 

而且,当我尝试在工资领域的随机字符串我得到一个异常。

Failed to convert property value of type java.lang.String to required type java.lang.Double for property salary; nested exception is java.lang.NumberFormatException: 

如何摆脱这个异常?

+0

如何解决在部门领域的例外,我得到: '未能Java类型的属性值转换.lang.String为所需的类型org.abc.model.entities.Department for pro perty部门;嵌套异常是java.lang.IllegalStateException:不能转换类型[java.lang.String] ..的值 – Tayba

回答

0

尝试为约束合成添加@Valid属性。这样一来,在Address所有限制将被评估:

@Valid 
private Address address; 

至于格式例外,它是我不清楚如何或在哪里您获得的错误,但不是在你的控制器验证模型等(使用控制器的方法参数前@Valid属性),我会建议使用CURRENCY钱(工资):

@NumberFormat(style=Style.CURRENCY) 
相关问题