SpringMVC-伺服器表單校驗
常用的校驗規則
Bean Validation 中内置的限制
@Null 被注釋的元素必須為 null
@NotNull 被注釋的元素必須不為 null
@AssertTrue 被注釋的元素必須為 true
@AssertFalse 被注釋的元素必須為 false
@Min(value) 被注釋的元素必須是一個數字,其值必須大于等于指定的最小值
@Max(value) 被注釋的元素必須是一個數字,其值必須小于等于指定的最大值
@DecimalMin(value) 被注釋的元素必須是一個數字,其值必須大于等于指定的最小值
@DecimalMax(value) 被注釋的元素必須是一個數字,其值必須小于等于指定的最大值
@Size(max=, min=) 被注釋的元素的大小必須在指定的範圍内
@Digits (integer, fraction) 被注釋的元素必須是一個數字,其值必須在可接受的範圍内
@Past 被注釋的元素必須是一個過去的日期
@Future 被注釋的元素必須是一個将來的日期
@Pattern(regex=,flag=) 被注釋的元素必須符合指定的正規表達式
Hibernate Validator 附加的限制
@NotBlank(message =) 驗證字元串非null,且長度必須大于0
@Email 被注釋的元素必須是電子郵箱位址
@Length(min=,max=) 被注釋的字元串的大小必須在指定的範圍内
@NotEmpty 被注釋的字元串的必須非空
@Range(min=,max=,message=) 被注釋的元素必須在合适的範圍内
使用方法:
1.導入jar包
2.在配置檔案(web.xml中)添加<mvc:annotation-driven/>
3.在javaBean中添加對應的校驗規則
@NotNull
private String username;
@Max(value=200.message="請輸入合法的年齡")
private Integer age;
@Email(message="請正确輸入郵箱")
private String email;
@Pattern(regexp="^1(3|4|5|7|8)\\d{9}$",message="請正确輸入手機号碼")
private String phone;
4.在接收表單資訊的入參添加标記@vaild注解
@requestMapping("form")
public String form(@valid User user,BindingResult result){
int errorCount = result.getErrorCount();
if(errorCount != 0){
//擷取校驗錯誤字段即資訊
List<FieldError>fieldErrors = result.getFieldErrors();
for(FieldError fieldError:fieldErrors){
System.out.println(fieldError.getField()+":"+fieldError.getDefaultMessage());
}
}
System.out.println(user);
return "/result.jsp";
}
5.錯誤資訊回顯頁面
使用原始表單錯誤資訊寫到Model中
@requestMapping("form")
public String form(@valid User user,BindingResult result,Model model){
int errorCount = result.getErrorCount();
if(errorCount != 0){
//擷取校驗錯誤字段即資訊
List<FieldError>fieldErrors = result.getFieldErrors();
for(FieldError fieldError:fieldErrors){
System.out.println(fieldError.getField()+":"+fieldError.getDefaultMessage());
model.addAttribute(fieldError.getField(),fieldError.getDefaultMessage());
}
}
System.out.println(user);
return "/result.jsp";
}
<from action="${pageContext.request.contextPath}/form">
姓名:<input type="text" name="username" value="${user.username}">${username}<br>
姓名:<input type="text" name="age" value="${user.age}">${age}<br>
姓名:<input type="text" name="email" value="${user.email}">${email}<br>
姓名:<input type="text" name="phone" value="${user.phone}">${phone}<br>
<input type="submit" value="送出">
</form>
使用SpringMVC-form标簽
<!--在需要回顯資訊的位置加上下面格式的内容即可-->
<fm:error path="username"></fm:error>