我的应用程序对工资字段使用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字段,这会导致错误。如何显示消息"工资可能不是空的"而不是上面的例外,如果"字符串"是空的?感谢
答案 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或为空。