Valid使用詳解以及自定義註解的簡單使用

2021-10-19 23:25:18 字數 2980 閱讀 6605

步驟1:將@valid註解直接加在變數user之前,並且傳入bindingresult物件(也可不傳入),用於獲取校驗失敗情況下的反饋資訊,如下**

@restcontroller

public class usercontroller

system.out.println(user.getid());

system.out.println(user.getusername());

system.out.println(user.getpassword());

user.setid("1");

return user;

}}

步驟2:然後在 user 類中新增驗證資訊的要求

@data

public class user

@notblank 註解所指的 password 字段,表示驗證密碼不能為空,如果為空的話,上面 controller 中的 create 方法會將message 中的"密碼不能為空"返回。

@entity :表明是乙個實體類

@table(name="***")不加name預設是類名小寫

@id 主鍵註解

@generatedvalue()主鍵生成策略

@column(name="***" nullable=false) 列名對應資料表的一列 name預設是屬性名 nullable是值不能為空缺省是true

@data 等價於@getter + @setter 即不用寫get,set, tostring等方法

@basic 用於沒有任何標註的 get***() 方法,預設即為 @basic,所以若乙個 getter 方法無任何註解,可以使用 @basic 註解,也可以不使用

@notempty 用在集合上面(不能注釋列舉) 驗證註解的元素值不為null且不為空(字串長度不為0、集合大小不為0) 加了@notempty的string類、collection、map、陣列,是不能為null或者長度為0的

@notblank 用在string上面 驗證註解的元素值不為空 不能為null且trim()之後size>0

@notnull 用在所有型別上面 被注釋的元素不能為null 用在基本型別上,如integer、double。用在集合陣列時,不能為null,但可以為empty,沒有size的約束(size = 0)

​@null 被注釋的元素必須為null

@asserttrue 被注釋的元素必須為true

@assertfalse 被注釋的元素必須為false

@min(value) 被注釋的元素必須是乙個數字,其值必須大於等於指定的最小值

@max(value) 被注釋的元素必須是乙個數字,其值必須小於等於指定的最大值

@decimalmin(value) 被注釋的元素必須是乙個數字,其值必須大於等於指定的最小值

@decimalmax(value) 被注釋的元素必須是乙個數字,其值必須小於等於指定的最大值

@size(max,min) 被注釋的元素的大小必須在指定的範圍內。值必須是string、 集合或陣列, 並且它的長度要符合給定的範圍

@digits(integer,fraction) 被注釋的元素必須是乙個小數,且整數部分位數不能超過integer,小數部分位數不能超過fraction

@past 被注釋的元素必須是乙個過去的日期

@future 被注釋的元素必須是乙個將來的日期

@pattern(value) 被注釋的元素必須符合指定的正規表示式。

@email 被注釋的元素必須是電子郵件位址 也可以通過正規表示式和flag指定自定義的email格式

@length 被注釋的字串的大小必須在指定的範圍內

@notempty 被注釋的字串必須非空 @range 被注釋的元素必須在合適的範圍內

@range(min=,max=) 數字必須大於等於min,小於等於max

@safehtml 字串是安全的html

@url 字串是安全的url

具體問題描述:在校驗過程中,需要限制該屬性只能傳入規定內容,於是使用列舉類進行約束引數。

@getter

public enum roleenum implements codeenum

}

然後可在controller中進行引數校驗,但由於專案中該類校驗較多,造成**冗餘。故採用自定義註解進行校驗

@data

public class userinfo

註解的具體內容:

@target() //在方法和屬性上面起作用

@retention(retentionpolicy.runtime)

@constraint(validatedby = enumvalidatorclass.class)

public @inte***ce enumvalidator ;

class<? extends payload> payload() default ;

}

下面是校驗器:

@slf4j

public class enumvalidatorclass implements constraintvalidator缺少欄位名為code的字段", clz.getname()));

}object value = null;

for (object obj : objects)

} catch (exception e)

}@override

public boolean isvalid(object value, constraintvalidatorcontext context)

}

後續遇到此類相似需求,只需建立enum類,並在對應屬性上新增註解即可。當然,自定義註解能解決的問題還有很多,這就需要根據不同需求進行思考調整,希望大家都能掌握自定義註解的使用。

自定義View詳解

自定義view可能大家平常都會使用到,但是一般都是複製乙個別人的 還沒有過完全自己寫的自定義view吧。自定義view一般使用在自定義進度條時會用到。自定義可以簡單理解為封裝的textview button等都是繼承自view。自定義view需要學習三個變數屬性 canvas 畫布 paint 畫筆...

列表以及自定義列表的使用

1.無序列表 就是定義乙個無序列表,就是定義列表中都有什麼內容,在ul中有乙個type型別的屬性,主要有以下三個屬性 disc 實心的小圓點,預設值 circle 空心的圓圈 square 實心的正方形 2.有序列表 有序列表與無序列表的區別就在於前面的排列序號,有序列表的type可以自定義一些型別...

自定義指令,以及使用場景

vue 除了提供預設的內建指令,還可以允許開發人員根據實際情況自定義指令,他的作用價值在於開發人員在某些場合下需要對普通的dom元素進行操作 vue自定義指令和元件一樣存在著全域性註冊和區域性註冊兩種方式,全域性自定義指令 通過vue.directive id,definition 方式註冊全域性指...