步驟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 方式註冊全域性指...