Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
byit-validation-starter
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
huangfukexing
byit-validation-starter
Commits
e1522040
Commit
e1522040
authored
Dec 30, 2019
by
huangfusuper
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
将捕获的异常抛出去,以便于引用方处理异常
parent
e1743b8c
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
55 additions
and
63 deletions
+55
-63
NotParamValidationUtil.java
src/main/java/com/byit/utils/NotParamValidationUtil.java
+13
-17
ParamValidationUtil.java
src/main/java/com/byit/utils/ParamValidationUtil.java
+41
-45
ValidationUtil.java
src/main/java/com/byit/utils/ValidationUtil.java
+1
-1
No files found.
src/main/java/com/byit/utils/NotParamValidationUtil.java
View file @
e1522040
...
@@ -19,25 +19,21 @@ public class NotParamValidationUtil {
...
@@ -19,25 +19,21 @@ public class NotParamValidationUtil {
* @param annotation 参数上的注解
* @param annotation 参数上的注解
* @param value
* @param value
*/
*/
public
static
void
isValidation
(
Annotation
annotation
,
Object
value
){
public
static
void
isValidation
(
Annotation
annotation
,
Object
value
)
throws
Exception
{
try
{
//获取此注解上的元注解
//获取此注解上的元注解
MetaAnnotation
metaAnnotation
=
annotation
.
annotationType
().
getAnnotation
(
MetaAnnotation
.
class
);
MetaAnnotation
metaAnnotation
=
annotation
.
annotationType
().
getAnnotation
(
MetaAnnotation
.
class
);
Class
<?
extends
ValidationSelector
>
validationClass
=
metaAnnotation
.
validationClass
();
Class
<?
extends
ValidationSelector
>
validationClass
=
metaAnnotation
.
validationClass
();
ValidationSelector
validationSelector
=
validationClass
.
newInstance
();
ValidationSelector
validationSelector
=
validationClass
.
newInstance
();
validationSelector
.
init
(
annotation
,
value
);
validationSelector
.
init
(
annotation
,
value
);
boolean
valid
=
validationSelector
.
isValid
(
annotation
,
value
);
boolean
valid
=
validationSelector
.
isValid
(
annotation
,
value
);
//获取注解上的错误信息
//获取注解上的错误信息
//获取本注解上的错误回调方法 获取错误提示信息
//获取本注解上的错误回调方法 获取错误提示信息
Method
errorMessage
=
annotation
.
getClass
().
getMethod
(
"errorMessage"
);
Method
errorMessage
=
annotation
.
getClass
().
getMethod
(
"errorMessage"
);
String
errorMessageStr
=
(
String
)
errorMessage
.
invoke
(
annotation
);
String
errorMessageStr
=
(
String
)
errorMessage
.
invoke
(
annotation
);
if
(!
valid
){
if
(!
valid
){
throw
new
DataValidationException
(
errorMessageStr
);
throw
new
DataValidationException
(
errorMessageStr
);
}
}
catch
(
Exception
e
){
e
.
printStackTrace
();
}
}
}
}
}
}
src/main/java/com/byit/utils/ParamValidationUtil.java
View file @
e1522040
...
@@ -12,61 +12,57 @@ import java.lang.reflect.Method;
...
@@ -12,61 +12,57 @@ import java.lang.reflect.Method;
* 这个是需要验证其内部属性是否通过校验的实现类
* 这个是需要验证其内部属性是否通过校验的实现类
* @author huangfu
* @author huangfu
*/
*/
public
class
ParamValidationUtil
{
public
class
ParamValidationUtil
{
/**
/**
* 校验实现
* 校验实现
* @param object
* @param object
*/
*/
public
static
void
isValidation
(
Object
object
){
public
static
void
isValidation
(
Object
object
)
throws
Exception
{
try
{
//获取的是方法参数的类的对象
//获取的是方法参数的类的对象
Class
<?>
aClass
=
object
.
getClass
();
Class
<?>
aClass
=
object
.
getClass
();
//获取该对象所有的属性
//获取该对象所有的属性
Field
[]
declaredFields
=
aClass
.
getDeclaredFields
();
Field
[]
declaredFields
=
aClass
.
getDeclaredFields
();
//遍历本对象所有的成员变量
//遍历本对象所有的成员变量
for
(
int
i
=
0
;
i
<
declaredFields
.
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
declaredFields
.
length
;
i
++)
{
//获取属性上所有的注解
//获取属性上所有的注解
Annotation
[]
annotations
=
declaredFields
[
i
].
getAnnotations
();
Annotation
[]
annotations
=
declaredFields
[
i
].
getAnnotations
();
//如果这个属性没有注解的话就下一个
//如果这个属性没有注解的话就下一个
if
(
annotations
==
null
||
annotations
.
length
<=
0
){
if
(
annotations
==
null
||
annotations
.
length
<=
0
){
continue
;
continue
;
}
}
/**
/**
* 遍历此属性所有的注解,寻找破解法
* 遍历此属性所有的注解,寻找破解法
*/
*/
for
(
int
j
=
0
;
j
<
annotations
.
length
;
j
++)
{
for
(
int
j
=
0
;
j
<
annotations
.
length
;
j
++)
{
//获取这个注解
//获取这个注解
Class
<?
extends
Annotation
>
selectorClass
=
annotations
[
j
].
annotationType
();
Class
<?
extends
Annotation
>
selectorClass
=
annotations
[
j
].
annotationType
();
//判断本注解是否存在元注解MetaAnnotation
//判断本注解是否存在元注解MetaAnnotation
boolean
annotationPresent
=
selectorClass
.
isAnnotationPresent
(
MetaAnnotation
.
class
);
boolean
annotationPresent
=
selectorClass
.
isAnnotationPresent
(
MetaAnnotation
.
class
);
//存在就获取内部属性
//存在就获取内部属性
if
(
annotationPresent
){
if
(
annotationPresent
){
//获取本注解上的错误回调方法 获取错误提示信息
//获取本注解上的错误回调方法 获取错误提示信息
Method
errorMessage
=
annotations
[
j
].
getClass
().
getMethod
(
"errorMessage"
);
Method
errorMessage
=
annotations
[
j
].
getClass
().
getMethod
(
"errorMessage"
);
String
errorMessageStr
=
(
String
)
errorMessage
.
invoke
(
annotations
[
j
]);
String
errorMessageStr
=
(
String
)
errorMessage
.
invoke
(
annotations
[
j
]);
//获取元注解MetaAnnotation
//获取元注解MetaAnnotation
MetaAnnotation
annotation
=
selectorClass
.
getAnnotation
(
MetaAnnotation
.
class
);
MetaAnnotation
annotation
=
selectorClass
.
getAnnotation
(
MetaAnnotation
.
class
);
//获取注解上的元注解指定的本注解所绑定的实现类
//获取注解上的元注解指定的本注解所绑定的实现类
Class
<?
extends
ValidationSelector
>
validationClass
=
annotation
.
validationClass
();
Class
<?
extends
ValidationSelector
>
validationClass
=
annotation
.
validationClass
();
//创建实例
//创建实例
ValidationSelector
validationSelectorImpl
=
validationClass
.
newInstance
();
ValidationSelector
validationSelectorImpl
=
validationClass
.
newInstance
();
//调用校验方法
//调用校验方法
declaredFields
[
i
].
setAccessible
(
true
);
declaredFields
[
i
].
setAccessible
(
true
);
//调用初始化方法
//调用初始化方法
validationSelectorImpl
.
init
(
annotations
[
j
],
declaredFields
[
i
].
get
(
object
));
validationSelectorImpl
.
init
(
annotations
[
j
],
declaredFields
[
i
].
get
(
object
));
//调用验证器是否验证成功 false失败 true 成功
//调用验证器是否验证成功 false失败 true 成功
boolean
valid
=
validationSelectorImpl
.
isValid
(
annotations
[
j
],
declaredFields
[
i
].
get
(
object
));
boolean
valid
=
validationSelectorImpl
.
isValid
(
annotations
[
j
],
declaredFields
[
i
].
get
(
object
));
if
(!
valid
){
if
(!
valid
){
throw
new
DataValidationException
(
errorMessageStr
);
throw
new
DataValidationException
(
errorMessageStr
);
}
}
}
}
}
}
}
}
catch
(
Exception
e
){
e
.
printStackTrace
();
}
}
}
}
}
}
src/main/java/com/byit/utils/ValidationUtil.java
View file @
e1522040
...
@@ -112,7 +112,7 @@ public class ValidationUtil {
...
@@ -112,7 +112,7 @@ public class ValidationUtil {
* 实体类校验,校验规则依据实体类内的成员变量注解
* 实体类校验,校验规则依据实体类内的成员变量注解
* @param object
* @param object
*/
*/
public
static
void
modelIsAnnotationValidation
(
Object
object
){
public
static
void
modelIsAnnotationValidation
(
Object
object
)
throws
Exception
{
ParamValidationUtil
.
isValidation
(
object
);
ParamValidationUtil
.
isValidation
(
object
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment