3

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

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

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

4

2 回答 2

4

休眠

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

例子

    @Range(min=1, max=1000)

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

例子

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

春天

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

例子

     @RegExp("[0-9]+")   
于 2013-09-17T15:19:47.747 回答
1

这不是在验证级别上要做的事情。

当您在表单中输入内容并提交该表单时,浏览器将发送一个 HTTP 请求,其中您的<input>字段序列化并作为请求参数发送。然后,Spring 根据 bean 字段的数据类型,尝试将String请求参数值转换为Long类型。如果因为 String 不是 a 而不能这样做Long,它将抛出异常 ( NumberFormatException) 并以 400 错误代码响应。

您可以在(HTML5)客户端验证这一点

<input name="userId" type="number">

或使用

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

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

于 2013-09-17T15:06:17.093 回答