kotlin使用spring mvc(八)

自定义参数验证

官方提供的参数验证基本满足需求了,但是有时候我们需要自定义验证去满足一些特殊需求,下面来实现一个自定义参数验证

我们定义一个注解,这个注解用于提示不用包含*的功能

import javax.validation.Constraint
import kotlin.reflect.KClass

@Target(AnnotationTarget.FIELD, AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
@MustBeDocumented
@Constraint(validatedBy = [NotContainsStarValidator::class])
annotation class NotContainsStar(
        //如果外部不设置这个属性,那么使用当前默认
        //如果使用设置了就用默认的
        val message:String = "不能包括字符*",
        //必须,没有会提示错误
        val groups: Array<KClass<out Any>> = [],
        //必须,没有会提示错误
        val payload: Array<KClass<out Any>> = []

)

注解需要一个具体实现的业务类NotContainsStarValidator

import javax.validation.ConstraintValidator
import javax.validation.ConstraintValidatorContext

class NotContainsStarValidator: ConstraintValidator<NotContainsStar,String> {
    override fun isValid(value: String?, context: ConstraintValidatorContext?): Boolean {
        if(value != null && context != null){
            if(value.contains("*")){
//                context.disableDefaultConstraintViolation();//禁用默认的message的值
//                //重新添加错误提示语句
//                context
//                        .buildConstraintViolationWithTemplate("字符串不能包括字符*")
//                        .addConstraintViolation()
                return false
            }
        }
        return true
    }
}

最后打在要被注解的字段上就行了

 @NotContainsStar(message = "描述中不能包含字符*")
                    val description: String? = null

转载于:https://my.oschina.net/weidedong/blog/2253105

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值