Javax空整数字段验证

时间:2017-09-26 11:21:32

标签: java hibernate validation

我的应用程序对工资字段使用javax验证,即int。我应该使用什么注释,以避免像

这样的错误消息
  

无法转换类型' java.lang.String'的属性值至   所需类型' int'对于财产'工资&#39 ;;嵌套异常是   java.lang.NumberFormatException:对于输入字符串:""

我目前的实现如下:

@Column(name = "salary", nullable = false)
@NotNull(message= "salary may not be empty")
@Range(min = 1)
private int salary;

我知道我不能将NotBlank用于int字段,这会导致错误。如何显示消息"工资可能不是空的"而不是上面的例外,如果"字符串"是空的?感谢

4 个答案:

答案 0 :(得分:2)

我建议你使用可以保存null值的对象类型Integer

@Column(name = "salary", nullable = false)
@NotNull(message= "salary may not be empty")
@Range(min = 1)
private Integer salary;

以上确保总会有salary输入具有值且等于或大于1。

答案 1 :(得分:0)

将此设置为Web部署描述符文件web.xml:

<context-param>
    <param-name>
        javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
    </param-name>
    <param-value>true</param-value>
</context-param>

答案 2 :(得分:0)

如果该字段包含在另一个类中,例如:

public static class Employee {
    @Column(name = "salary", nullable = false)
    @NotNull(message= "salary may not be empty")
    @Range(min = 1)
    private int salary;
}

您还需要确保将@Valid用于Employee的实例:

@Valid @NotNull
public Employee someEmployee;

答案 3 :(得分:0)

@Column(name = "salary", nullable = false)
@Range(min = 1, message= "salary may not be empty or null")
private int salary;

在@Range中,我们还可以提及消息。这意味着薪水将为1或大于1,并且不会为null或为空。