Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Litemall
Commits
bc6f8747
Commit
bc6f8747
authored
Jul 31, 2018
by
Junling Bu
Browse files
feat[litemall-core]: 支持排序校验。
parent
02642746
Changes
6
Hide whitespace changes
Inline
Side-by-side
litemall-core/src/main/java/org/linlinjava/litemall/core/config/GlobalExceptionHandler.java
View file @
bc6f8747
package
org.linlinjava.litemall.core.config
;
import
org.hibernate.validator.internal.engine.path.PathImpl
;
import
org.linlinjava.litemall.core.util.ResponseUtil
;
import
org.springframework.http.converter.HttpMessageNotReadableException
;
import
org.springframework.web.bind.MissingServletRequestParameterException
;
import
org.springframework.web.bind.annotation.ControllerAdvice
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.ResponseStatus
;
import
org.springframework.web.method.annotation.MethodArgumentTypeMismatchException
;
import
javax.validation.ConstraintViolation
;
import
javax.validation.ConstraintViolationException
;
import
javax.validation.ValidationException
;
import
java.util.Set
;
@ControllerAdvice
public
class
GlobalExceptionHandler
{
...
...
@@ -18,6 +26,13 @@ public class GlobalExceptionHandler {
return
ResponseUtil
.
badArgumentValue
();
}
@ExceptionHandler
(
MissingServletRequestParameterException
.
class
)
@ResponseBody
public
Object
argumentHandler
(
MissingServletRequestParameterException
e
){
e
.
printStackTrace
();
return
ResponseUtil
.
badArgumentValue
();
}
@ExceptionHandler
(
HttpMessageNotReadableException
.
class
)
@ResponseBody
public
Object
httpMessageNotReadableHandler
(
HttpMessageNotReadableException
e
){
...
...
@@ -25,6 +40,21 @@ public class GlobalExceptionHandler {
return
ResponseUtil
.
badArgumentValue
();
}
@ExceptionHandler
(
ValidationException
.
class
)
@ResponseBody
public
Object
handle
(
ValidationException
e
)
{
e
.
printStackTrace
();
if
(
e
instanceof
ConstraintViolationException
){
ConstraintViolationException
exs
=
(
ConstraintViolationException
)
e
;
Set
<
ConstraintViolation
<?>>
violations
=
exs
.
getConstraintViolations
();
for
(
ConstraintViolation
<?>
item
:
violations
)
{
String
message
=
((
PathImpl
)
item
.
getPropertyPath
()).
getLeafNode
().
getName
()
+
item
.
getMessage
();
return
ResponseUtil
.
fail
(
402
,
message
);
}
}
return
ResponseUtil
.
badArgumentValue
();
}
@ExceptionHandler
(
Exception
.
class
)
@ResponseBody
public
Object
exceptionHandler
(
Exception
e
){
...
...
litemall-core/src/main/java/org/linlinjava/litemall/core/config/ValidatorConfiguration.java
0 → 100644
View file @
bc6f8747
package
org.linlinjava.litemall.core.config
;
import
org.hibernate.validator.HibernateValidator
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
javax.validation.Validation
;
import
javax.validation.Validator
;
import
javax.validation.ValidatorFactory
;
@Configuration
public
class
ValidatorConfiguration
{
@Bean
public
Validator
validator
(){
ValidatorFactory
validatorFactory
=
Validation
.
byProvider
(
HibernateValidator
.
class
)
.
configure
()
.
addProperty
(
"hibernate.validator.fail_fast"
,
"true"
)
.
buildValidatorFactory
();
Validator
validator
=
validatorFactory
.
getValidator
();
return
validator
;
}
}
litemall-core/src/main/java/org/linlinjava/litemall/core/validator/Order.java
0 → 100644
View file @
bc6f8747
package
org.linlinjava.litemall.core.validator
;
import
javax.validation.Constraint
;
import
javax.validation.Payload
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.Target
;
import
static
java
.
lang
.
annotation
.
ElementType
.*;
import
static
java
.
lang
.
annotation
.
RetentionPolicy
.
RUNTIME
;
@Target
({
METHOD
,
FIELD
,
PARAMETER
})
@Retention
(
RUNTIME
)
@Documented
@Constraint
(
validatedBy
=
OrderValidator
.
class
)
public
@interface
Order
{
String
message
()
default
"排序类型不支持"
;
String
[]
accepts
()
default
{
"desc"
,
"asc"
};
Class
<?>[]
groups
()
default
{};
Class
<?
extends
Payload
>[]
payload
()
default
{};
}
litemall-core/src/main/java/org/linlinjava/litemall/core/validator/OrderValidator.java
0 → 100644
View file @
bc6f8747
package
org.linlinjava.litemall.core.validator
;
import
javax.validation.ConstraintValidator
;
import
javax.validation.ConstraintValidatorContext
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
OrderValidator
implements
ConstraintValidator
<
Order
,
String
>{
private
List
<
String
>
valueList
;
@Override
public
void
initialize
(
Order
order
)
{
valueList
=
new
ArrayList
<
String
>();
for
(
String
val
:
order
.
accepts
())
{
valueList
.
add
(
val
.
toUpperCase
());
}
}
@Override
public
boolean
isValid
(
String
s
,
ConstraintValidatorContext
constraintValidatorContext
)
{
if
(!
valueList
.
contains
(
s
.
toUpperCase
()))
{
return
false
;
}
return
true
;
}
}
litemall-core/src/main/java/org/linlinjava/litemall/core/validator/Sort.java
0 → 100644
View file @
bc6f8747
package
org.linlinjava.litemall.core.validator
;
import
javax.validation.Constraint
;
import
javax.validation.Payload
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.Target
;
import
static
java
.
lang
.
annotation
.
ElementType
.*;
import
static
java
.
lang
.
annotation
.
RetentionPolicy
.
RUNTIME
;
@Target
({
METHOD
,
FIELD
,
PARAMETER
})
@Retention
(
RUNTIME
)
@Documented
@Constraint
(
validatedBy
=
SortValidator
.
class
)
public
@interface
Sort
{
String
message
()
default
"排序字段不支持"
;
String
[]
accepts
()
default
{
"add_time"
,
"id"
};
Class
<?>[]
groups
()
default
{};
Class
<?
extends
Payload
>[]
payload
()
default
{};
}
litemall-core/src/main/java/org/linlinjava/litemall/core/validator/SortValidator.java
0 → 100644
View file @
bc6f8747
package
org.linlinjava.litemall.core.validator
;
import
javax.validation.ConstraintValidator
;
import
javax.validation.ConstraintValidatorContext
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
SortValidator
implements
ConstraintValidator
<
Sort
,
String
>{
private
List
<
String
>
valueList
;
@Override
public
void
initialize
(
Sort
sort
)
{
valueList
=
new
ArrayList
<
String
>();
for
(
String
val
:
sort
.
accepts
())
{
valueList
.
add
(
val
.
toUpperCase
());
}
}
@Override
public
boolean
isValid
(
String
s
,
ConstraintValidatorContext
constraintValidatorContext
)
{
if
(!
valueList
.
contains
(
s
.
toUpperCase
()))
{
return
false
;
}
return
true
;
}
}
Write
Preview
Supports
Markdown
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