如何通过注释帮助限制用户在Integer字段中输入数字?

时间:2013-09-17 15:02:52

标签: java spring-mvc annotations

我需要限制用户在jsp字段中输入数值。如果失败,它应该给出相关信息。这是我目前的声明:

@NotNull  
@Column(value="userId")  
private Long userId; 

我需要知道还需要添加哪些注释,以便在不更改字段数据类型的情况下获得所需结果。

2 个答案:

答案 0 :(得分:4)

<强>休眠

@Range - 检查值是否在最小值和最大值之间

实施例

    @Range(min=1, max=1000)

@Pattern - 检查属性是否与给定匹配标志的正则表达式匹配 @Pattern(regex =“regexp”,flag =)或@Patterns({@Pattern(...)})

实施例

    @Pattern(regex = "[0-9]+")

<强>弹簧

@RegExp - 检查属性是否与给定匹配标志的正则表达式匹配

实施例

     @RegExp("[0-9]+")   

答案 1 :(得分:1)

这不是在验证级别上完成的事情。

当您在表单中输入内容并提交该表单时,浏览器将发送一个HTTP请求,并将<input>字段序列化并作为请求参数发送。然后Spring根据bean字段的数据类型尝试从String请求参数值转换为Long类型。如果由于String不是Long而无法执行此操作,则会抛出异常(NumberFormatException)并以400错误代码进行响应。

您可以使用

在(HTML5)客户端进行验证
<input name="userId" type="number">

或使用

<input type="text" pattern="\d*" />

如果你不想要十进制数字。