Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
legobackend
/
lego-manage
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
6c69bede
authored
2025-04-23 20:04:55 +0800
by
chentao
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
no message
1 parent
967fa8ce
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
10 additions
and
29 deletions
lego-common/src/main/java/com/lego/common/annotation/AtLeastOneNonNull.java → lego-core/src/main/java/com/lego/core/annotation/AtLeastOneNonNull.java
lego-common/src/main/java/com/lego/common/annotation/AtLeastOneNonNullValidator.java → lego-core/src/main/java/com/lego/core/annotation/AtLeastOneNonNullValidator.java
lego-core/src/main/java/com/lego/core/domin/bo/CourseBo.java
lego-co
mmon/src/main/java/com/lego/common
/annotation/AtLeastOneNonNull.java
→
lego-co
re/src/main/java/com/lego/core
/annotation/AtLeastOneNonNull.java
View file @
6c69bed
package
com
.
lego
.
co
mmon
.
annotation
;
package
com
.
lego
.
co
re
.
annotation
;
/**
* @author chentao
* @date 2025/4/23
*/
import
com.lego.core.annotation.AtLeastOneNonNullValidator
;
import
javax.validation.Constraint
;
import
javax.validation.Payload
;
import
java.lang.annotation.ElementType
;
...
...
@@ -15,7 +17,7 @@ import java.lang.annotation.Target;
@Target
({
ElementType
.
TYPE
})
@Retention
(
RetentionPolicy
.
RUNTIME
)
public
@interface
AtLeastOneNonNull
{
String
message
()
default
"
At least one field must be non-null
"
;
String
message
()
default
"
2D和3D不能都为空
"
;
Class
<?>[]
groups
()
default
{};
Class
<?
extends
Payload
>[]
payload
()
default
{};
String
[]
fields
();
// 指定需要校验的字段名数组
...
...
lego-co
mmon/src/main/java/com/lego/common
/annotation/AtLeastOneNonNullValidator.java
→
lego-co
re/src/main/java/com/lego/core
/annotation/AtLeastOneNonNullValidator.java
View file @
6c69bed
package
com
.
lego
.
co
mmon
.
annotation
;
package
com
.
lego
.
co
re
.
annotation
;
import
com.lego.common.utils.StringUtils
;
import
com.lego.core.domin.bo.CourseBo
;
import
javax.validation.ConstraintValidator
;
import
javax.validation.ConstraintValidatorContext
;
import
java.lang.reflect.Field
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Objects
;
/**
* @author chentao
* @date 2025/4/23
*/
public
class
AtLeastOneNonNullValidator
implements
ConstraintValidator
<
AtLeastOneNonNull
,
Object
>
{
public
class
AtLeastOneNonNullValidator
implements
ConstraintValidator
<
AtLeastOneNonNull
,
CourseBo
>
{
private
List
<
String
>
fields
;
@Override
...
...
@@ -22,27 +21,7 @@ public class AtLeastOneNonNullValidator implements ConstraintValidator<AtLeastOn
}
@Override
public
boolean
isValid
(
Object
object
,
ConstraintValidatorContext
context
)
{
if
(
object
==
null
)
{
return
false
;
// 如果对象本身为null,则不满足条件
}
for
(
String
fieldName
:
fields
)
{
try
{
Field
field
=
object
.
getClass
().
getDeclaredField
(
fieldName
);
field
.
setAccessible
(
true
);
// 设置私有字段可访问,以便读取值
if
(
Objects
.
nonNull
(
field
.
get
(
object
)))
{
// 检查字段是否非空
String
value
=
String
.
valueOf
(
field
.
get
(
object
));
System
.
out
.
println
(
field
.
getName
()+
"============"
+
value
+
"!"
);
if
(
StringUtils
.
isNotEmpty
(
value
)
&&
!
"null"
.
equals
(
value
))
{
System
.
out
.
println
(
field
.
getName
()
+
"============"
+
field
.
get
(
object
)
+
"&"
);
return
true
;
// 如果至少一个字段非空,返回true
}
}
}
catch
(
NoSuchFieldException
|
IllegalAccessException
e
)
{
// 处理异常,例如记录日志等
return
false
;
// 出现异常时,保守起见返回false,实际中应更细致处理异常情况
}
}
return
false
;
// 所有指定字段均为空或出现异常,返回false
public
boolean
isValid
(
CourseBo
object
,
ConstraintValidatorContext
context
)
{
return
object
!=
null
&&
(
StringUtils
.
isNotBlank
(
object
.
getTwoDimensionalOssId
())
||
StringUtils
.
isNotBlank
(
object
.
getThreeDimensionalOssId
()));
}
}
...
...
lego-core/src/main/java/com/lego/core/domin/bo/CourseBo.java
View file @
6c69bed
package
com
.
lego
.
core
.
domin
.
bo
;
import
com.lego.co
mmon
.annotation.AtLeastOneNonNull
;
import
com.lego.co
re
.annotation.AtLeastOneNonNull
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
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 post a comment