2017-09-26 78 views
0

我的应用程序对薪水字段使用javax验证,这是int。用什么注解我应该使用它,以避免类似的Javax空整数字段验证

未能类型的属性值“java.lang.String中”转换为 所需类型“诠释”财产“工资”的错误信息;嵌套的例外是 java.lang.NumberFormatException:对于输入字符串:“”

我当前的实现看起来是这样的:

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

我知道,我不能使用NotBlank一个INT领域,即导致错误。如果“字符串”为空,我怎样才能显示消息“薪水可能不是空的”而不是上面的例外情况?谢谢

+0

将类型从原始类型'int'更改为包装类'Integer'。它会工作 – Yogi

+0

你可以检查@NotEmpty。 –

+0

谢谢,我知道。还有其他解决方案吗? – Alex

回答

0

我建议你使用对象类型Integer,它可以容纳null值本身。

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

上述保证会有总是salary输入具有价值,它是等于或大于1

+0

有人会给我一个提示是什么让我的回答得到一个downvote?这些匿名downvotes是真的没有帮助,我不知道如何解决一个错误,如果有任何。 –

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> 
0

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

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

也NE编辑以确保对Employee的实例使用@Valid:

@Valid @NotNull 
public Employee someEmployee;