我需要限制用户在jsp字段中输入数值。如果失败,它应该给出相关信息。这是我目前的声明:
@NotNull
@Column(value="userId")
private Long userId;
我需要知道还需要添加哪些注释,以便在不更改字段数据类型的情况下获得所需结果。
答案 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*" />
如果你不想要十进制数字。