国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - 使用BindingResult 自定義錯(cuò)誤信息

使用BindingResult 自定義錯(cuò)誤信息

2022-02-27 14:56賢云(xianyun) Java教程

這篇文章主要介紹了使用BindingResult 自定義錯(cuò)誤信息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

BindingResult 自定義錯(cuò)誤信息

前提概要

在Spring MVC和FreeMarker整合的項(xiàng)目中,采用JSR-303驗(yàn)證框架,通過(guò)注解的方式進(jìn)行數(shù)據(jù)驗(yàn)證

基礎(chǔ)框架

  • MVC:Spring MVC 3
  • 視圖:FreeMarker
  • 驗(yàn)證:Hibernate-validator實(shí)現(xiàn)

配置文件和Java代碼的修改

在Spring MVC配置文件中添加配置

添加以下mvc的注解驅(qū)動(dòng)配置,一切變成“自動(dòng)化”

?
1
<mvc:annotation-driven />

在JavaBean中添加數(shù)據(jù)校驗(yàn)的注解

其中@Length、@email就是Hibernate-validator中的數(shù)據(jù)校驗(yàn)注解,還可以用javax.validation中的注解,比如@NotNull

?
1
2
3
4
5
6
public class SystemUser { 
    @Length(min = 5, max = 20, message = "用戶名長(zhǎng)度必須位于5到20之間"
    private String userName;  
    @Email(message = "比如輸入正確的郵箱"
    private String email; 
}

在Controller方法中指定需要進(jìn)行校驗(yàn)

首先,要在需要進(jìn)行校驗(yàn)的Bean前面加上@Valid注解,告訴SpringMVC框架這個(gè)Bean需要進(jìn)行校驗(yàn);

同時(shí),還要在需要校驗(yàn)的Bean前面加上@modelattribute注解,從而將Bean暴露給視圖,并且指定名字,這有兩個(gè)作用,第一是顯示校驗(yàn)錯(cuò)誤需要使用這個(gè)名字,第二個(gè)是返回原來(lái)的頁(yè)面以后,前面輸入的所有值還要顯示出來(lái);

其次,每個(gè)需要校驗(yàn)的Bean后面緊跟一個(gè)BindingResult,SpringMVC框架會(huì)將校驗(yàn)結(jié)果保存在它里面,通過(guò)hasErrors方法可以判斷是否有校驗(yàn)錯(cuò)誤;

最后,當(dāng)返回到原頁(yè)面以后,SpringMVC框架還會(huì)將所有校驗(yàn)錯(cuò)誤信息保存在上下文中,供頁(yè)面上取得校驗(yàn)錯(cuò)誤,Spring提供了一套JSP自定義標(biāo)簽。

?
1
2
3
4
5
6
7
8
9
10
11
12
@RequestMapping(value = "/create.html", method = RequestMethod.POST) 
public String doCreateUser( 
        @Valid @ModelAttribute("userDetail") SystemUser user, 
        BindingResult bindingResult, 
        HttpServletRequest request) { 
    // 如果有校驗(yàn)錯(cuò)誤,返回添加用戶的頁(yè)面 
    if (bindingResult.hasErrors()) { 
        return "/user/create"
    }       
    this.userService.createUser(user); 
    return "/user/list.html"
}

進(jìn)行自定義校驗(yàn)

如果需要添加自定義校驗(yàn),比如驗(yàn)證用戶名是否已經(jīng)被使用了,那么簡(jiǎn)單的注解自然無(wú)能為力,需要自己編碼實(shí)現(xiàn),如果校驗(yàn)失敗,可以手動(dòng)將自定義校驗(yàn)錯(cuò)誤添加到BindingResult中。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@RequestMapping(value = "/user/create.html", method = RequestMethod.POST) 
public String doCreateUser( 
        @Valid @ModelAttribute("userDetail") SystemUser user, 
        BindingResult bindingResult, 
        HttpServletRequest request) { 
    // 如果有數(shù)據(jù)校驗(yàn)錯(cuò)誤,返回添加用戶的頁(yè)面 
    if (bindingResult.hasErrors()) { 
        return "/user/create"
    }   
    boolean isUserNameExist = this.userService.checkUserByUserName(user.getUserName()); 
    // 如果用戶名已存在,返回添加用戶的頁(yè)面 
    if (isUserNameExist) { 
        // 向BindingResult添加用戶已存在的校驗(yàn)錯(cuò)誤 
        bindingResult.rejectValue("userName", "該用戶名已存在", "該用戶名已存在"); 
        return "/user/create"
    }       
    this.userService.createUser(user); 
    return "/user/list.html"
}

在JSP頁(yè)面上顯示校驗(yàn)錯(cuò)誤信息

返回頁(yè)面以后,SpringMVC框架將所有校驗(yàn)錯(cuò)誤信息都放在了上下文中,可以自己去取出來(lái),但是那樣非常麻煩,不過(guò)沒(méi)關(guān)系,Spring提供了一套自定義標(biāo)簽,可以方便的顯示校驗(yàn)錯(cuò)誤信息。

頁(yè)面頭部需要導(dǎo)入Spring的自定義標(biāo)簽庫(kù)

?
1
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 

需要一次性顯示全部校驗(yàn)錯(cuò)誤

(commandName的值就是@modelattribute注解中指定的值)

?
1
2
3
<form:form commandName="userDetail">
<form:errors path="*" cssStyle="color:red"></form:errors>
</form:form>

需要在對(duì)應(yīng)輸入框的后面顯示單個(gè)校驗(yàn)錯(cuò)誤

(通過(guò)path指定顯示那個(gè)具體的校驗(yàn)錯(cuò)誤,userDetail正是@modelattribute注解中指定的值,而點(diǎn)號(hào)后面則是指定顯示Bean中哪個(gè)屬性的校驗(yàn)錯(cuò)誤)

?
1
2
3
4
<input type="text" name="userName" value="${userDetail.userName}" >
<form:errors path="userDetail.userName" cssStyle="color:red"></form:errors>
<input type="text" name="email" value="${userDetail.email}">
<form:errors path="userDetail.email" cssStyle="color:red"></form:errors>

BindingResult錯(cuò)誤返回顯示失敗

作為一個(gè)初學(xué)者經(jīng)常犯低級(jí)錯(cuò)誤,特別是沒(méi)有老師的情況下。絆了一整天,不過(guò)找到原因了

如果redirect跳轉(zhuǎn)回造成參數(shù)丟失

此時(shí)可以設(shè)置返回參數(shù)為Object

?
1
2
3
4
5
6
7
8
9
@RequestMapping(value = "/save", method = RequestMethod.POST)
public Object test(HttpServletRequest request, Model model, @Validated User user, BindingResult bindingResult)
throws Exception {
if (bindingResult.hasErrors()) {
return "user/save";
}
user.setVersion(0);
return new ModelAndView("redirect:/user/list");
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/zhengun/article/details/84918567

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 成人在线视频网 | 亚洲免费网站 | 在线免费观看激情视频 | 亚洲精品在线看 | 成人自拍视频 | 亚洲日本va在线观看 | 免费在线成人网 | 国产精品中文字幕在线 | 一本大道av伊人久久综合 | 亚洲欧美综合精品久久成人 | 久久亚洲国产精品日日av夜夜 | 欧美日韩高清在线一区 | 亚洲欧洲日韩 | 三级黄色在线视频 | 亚洲午夜免费视频 | 亚洲国产青草 | 国产麻豆乱码精品一区二区三区 | 91精品视频在线 | 老妇女av | 依人在线 | 蜜桃视频网站入口 | 欧美在线观看一区 | 91精品久久久久久久久久 | 福利久久 | 91视频网| 在线欧美视频 | 夜夜操操操操 | 亚洲电影在线观看 | 免看一级一片 | 在线视频一区二区三区 | 欧美在线免费观看 | 日韩午夜在线视频 | 免费一级毛片网站 | 亚洲精品影院在线 | 国产一区影院 | 亚洲一区欧美一区 | 亚洲一区二区在线视频 | 日本在线中文 | 特黄特色大片在线观看视频网站 | 狠狠综合久久av一区二区老牛 | 综合久久综合久久 |