亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

spring mvc校驗部分屬性

2019-11-15 00:20:00
字體:
來源:轉載
供稿:網友
sPRing mvc校驗部分屬性

轉載請注明:TheViperhttp://www.49028c.com/TheViper

基于JSR303注解校驗

問題的出現

一個很常見的場景,對于一個model(pojo) User(屬性有id,name,pwd密碼,email),在登陸注冊頁面中,登陸校驗和注冊校驗

1.需要校驗的屬性不同。登陸只需校驗name和pwd就可以了,不像注冊需要校驗全部屬性。

2.校驗同一屬性的目的不同。比如,注冊的時候,需要校驗name屬性是否為空,還有長度是否符合要求;登陸的時候就只用校驗是否為空就可以了。pwd同理。

3.由于校驗的目的不同,相應的返回的信息也不同。

可以看到此時如果只是在model屬性上單純的用注解是無能為力的,好在spring mvc為我們提供了解決方法。

解決

先看下最終效果

下面從頭到尾說下步驟:

1.下載spring framework,添加spring mvc必須的jar

例子里面沒有用到數據庫,所以少了很多jar.

2.添加org.json包,用于生成json格式字符串。當然也可以用其他可以生成json字符串的包。

3.添加hibernate-validator.jar,validation-api.jar,使spring mvc支持JSR303注解式的校驗

4.添加commons-logging.jar,jboss-logging.jar。否則啟動服務器出現錯誤。

5.添加classmate.jar,否則出現java.lang.ClassNotFoundException: com.fasterxml.classmate.Filter

6.在model上添加校驗注解,并為相應注解分組。比如

public class User {    private int id;    @NotEmpty(message="用戶名不能為空",groups={LoginCheck.class,RegCheck.class})    @Size(min=3,max=12,message="登錄名必須3-12位",groups={RegCheck.class})    private String name;    @NotEmpty(message="密碼不能為空",groups={LoginCheck.class,RegCheck.class})    @Size(min=6,max=16,message="密碼必須6-16位",groups={RegCheck.class})    private String pwd;    @NotEmpty(message="郵箱不能為空",groups={RegCheck.class})    @Email(message="不符合郵箱格式",groups={RegCheck.class})    private String email;}

可以看到注冊和登陸分別被”分到“了RegCheck.class和LoginCheck.class。這里的分組必須顯式表明校驗注解所屬于的組。

7.新建LoginCheck類,RegCheck類

public interface RegCheck {}public interface LoginCheck {    }

8.在業務類中添加@Validated注解,設置value值表示屬于哪個校驗組,當然前提是參數注入@ModelAttribute到model中

需要注意的地方

1.json字符串的生成,返回用org.json的json.toString()就可以了,不用像網上或書上說的用spring mvc的MappingJackson,還要去設置一下才能用。在返回數據類型上用@ResponseBody String就可以了。spring mvc會自動為響應添Content-Type:application/json。不過這樣返回的json字符串會亂碼

@RequestMapping(value = "/login",produces = {"application/json;charset=UTF-8"})就可以了。當然,也可以用網上說的其他方法。

2.關于錯誤信息的設置,可以到jar包里面設置。本屌這里是寫了個封裝,直接取出用的。

    public static JSONObject formatError(List<FieldError> errors) throws JSONException{        JSONObject wrap = new JSONObject();        JSONObject jsonObject= new JSONObject();        for(FieldError fieldError:errors)            jsonObject.put(fieldError.getField(),fieldError.getDefaultMessage());        wrap.put("errors", jsonObject);        return wrap;    }

bindingResult.hasErrors():校驗中是否有錯誤。

bindingResult.getFieldErrors():返回List,里面是FieldError,FieldError類getField()返回校驗的屬性名,getDefaultMessage()返回的就是自定義的錯誤信息。

3.關于注冊中的重復密碼(repwd)的校驗,可以用網上說的實現Validator接口。這里是在User類中定義repwd屬性。

注意,由于要用到@AssertTrue,repwd屬性在這里不能有getter方法,而是isRepwd()

    private String repwd;    @AssertTrue(message="密碼兩次輸入不一致",groups={RegCheck.class})    private boolean isRepwd() {        return this.pwd.equals(this.repwd);    }

例子下載

還可以參考http://jinnianshilongnian.VEvb.com/blog/1990081,其實spring mvc3就已經支持JSR303 group注解校驗了。

https://kevinpotgieter.Wordpress.com/2012/02/20/jsr303-spring-mvc-selective-validations/


上一篇:Spring

下一篇:Java基礎筆記-String類

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美精品一区| 国产精品欧美一区二区三区奶水| 欧美黑人极品猛少妇色xxxxx| 黑人巨大精品欧美一区免费视频| 91性高湖久久久久久久久_久久99| 久久久久久久影院| 91国内揄拍国内精品对白| 欧美在线视频a| 在线播放国产精品| 久久久免费精品视频| 狠狠躁夜夜躁人人躁婷婷91| 国产亚洲精品久久久久久| 精品网站999www| 亚洲成人xxx| 日韩电影中文 亚洲精品乱码| 国产一区二区三区视频在线观看| 亚洲片国产一区一级在线观看| 国产精品96久久久久久| 亚洲精品一区二区三区不| 日韩av在线精品| 亚洲自拍小视频免费观看| 日韩精品中文在线观看| 国产日产亚洲精品| 青草青草久热精品视频在线观看| 久久久久久久久久久人体| 青青草国产精品一区二区| 国产精品三级美女白浆呻吟| 国产精品免费观看在线| 国产亚洲视频在线| 色偷偷av亚洲男人的天堂| 国产成人涩涩涩视频在线观看| 宅男66日本亚洲欧美视频| 蜜月aⅴ免费一区二区三区| 国产精品r级在线| 中文字幕9999| 黄色一区二区在线| 精品成人在线视频| www.亚洲天堂| 5252色成人免费视频| 国产一区av在线| 精品久久久久久中文字幕大豆网| 人人爽久久涩噜噜噜网站| 亚洲色图18p| 国产精品久久久久久久久男| 日韩国产精品亚洲а∨天堂免| 高清日韩电视剧大全免费播放在线观看| 日韩欧美在线播放| 曰本色欧美视频在线| 国产日韩欧美在线播放| 在线午夜精品自拍| 精品无人区太爽高潮在线播放| 91久久国产精品| 日韩亚洲欧美中文高清在线| 国内精品视频久久| 日韩亚洲欧美中文高清在线| 欧洲美女7788成人免费视频| 欧美日韩精品在线视频| 一本一道久久a久久精品逆3p| 成人av在线亚洲| 久久久久久久久久久久av| 日韩不卡中文字幕| 国产欧美一区二区三区久久人妖| 中文字幕日韩欧美在线| 久久成人18免费网站| 欧美午夜片在线免费观看| 欧美在线观看网址综合| 国产欧美日韩免费看aⅴ视频| 日韩精品极品视频免费观看| 国产精品扒开腿做爽爽爽的视频| 成人精品福利视频| 精品偷拍一区二区三区在线看| 欧美性视频精品| 欧美成人精品一区| 欧美老肥婆性猛交视频| 国产精品草莓在线免费观看| 久久久人成影片一区二区三区| 一区二区三区在线播放欧美| 欧美中文在线视频| 2019亚洲日韩新视频| 日韩精品视频中文在线观看| 国内精品久久久久久久久| 精品久久久久久久久久久| 欧美午夜视频一区二区| 亚洲天堂色网站| 91wwwcom在线观看| 日本不卡高字幕在线2019| 欧美精品在线免费观看| 久久国产精品影视| 日韩a**站在线观看| 亚洲一区二区三区香蕉| 欧美性猛xxx| 久久天天躁狠狠躁夜夜av| 蜜臀久久99精品久久久无需会员| 欧洲日韩成人av| 国产中文字幕亚洲| 欧美日韩第一页| www.亚洲一二| 国产成人精品免费久久久久| 国产+成+人+亚洲欧洲| 日韩在线小视频| 91色视频在线导航| 日韩av网址在线| 91成人在线播放| 亚洲精品久久久久国产| 亚洲毛片在线免费观看| 91精品久久久久久久久| 亚洲美女视频网| 91免费精品国偷自产在线| 亚洲香蕉伊综合在人在线视看| 国产成人精品av在线| 中国日韩欧美久久久久久久久| 欧美精品18videos性欧美| 国产亚洲精品久久久优势| 国内外成人免费激情在线视频| 国产日产欧美精品| 欧美激情亚洲自拍| 欧美极度另类性三渗透| 一区二区三区无码高清视频| 国产在线a不卡| 中文字幕免费精品一区| 亚洲午夜性刺激影院| 69影院欧美专区视频| 久久久久久美女| 色偷偷偷亚洲综合网另类| xvideos成人免费中文版| 在线观看日韩欧美| 欧美成人免费全部| 国产精品毛片a∨一区二区三区|国| 久久精品电影一区二区| 最近2019免费中文字幕视频三| 日韩亚洲在线观看| 成人国产精品一区| 亚洲欧美综合区自拍另类| 欧美最猛性xxxxx免费| 一区二区三区四区视频| 国产精品视频免费在线观看| 国产精品久久久久久久久久尿| 久久这里有精品| 欧美日韩免费在线观看| 国产精品久久久久久久久久小说| 国产精品精品久久久| 亚洲精品国产欧美| 精品久久久久久亚洲精品| 91国产美女在线观看| 色一情一乱一区二区| 国产精品91在线观看| 日韩激情av在线免费观看| 国产精品扒开腿做爽爽爽视频| 91精品中国老女人| 中文欧美日本在线资源| 国产成人精品免高潮费视频| 久久久久久一区二区三区| 欧美一级片在线播放| 日韩动漫免费观看电视剧高清| 日韩av日韩在线观看| 中文在线不卡视频| 91精品在线看| 欧美性生交大片免网| 欧美体内谢she精2性欧美| 亚洲男人的天堂在线播放| 国产精品都在这里| 久久久久在线观看| 91精品久久久久久久久久另类| 国产精品一二区|