后端表情包依赖+自定义注解实现校验

这篇具有很好参考价值的文章主要介绍了后端表情包依赖+自定义注解实现校验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开发过程中遇到小程序登记信息填写文本时可能输入表情包,需要后端校验

由于字段太多,所以用自定义注解的方式来实现

步骤1:在pom文件中加入表情包依赖

        <dependency>
            <groupId>com.vdurmont</groupId>
            <artifactId>emoji-java</artifactId>
            <version>5.1.1</version>
        </dependency>

步骤2:

自定义注解类

package com.company.web.compatibility.annotation;

import cn.hutool.extra.emoji.EmojiUtil;
import com.itextpdf.text.log.SysoCounter;
import com.xiaoleilu.hutool.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;

import javax.validation.Constraint;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.ElementType.TYPE_USE;

/**
 * <p>
 * 表情包自定义校验注解
 * </p>
 * @date 2023/7/12/
 */
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = NotBlankEmoji.EmojiValidator.class)
@Documented
public @interface NotBlankEmoji {
    String message()
            default "不允许输入表情符号";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
    class EmojiValidator implements ConstraintValidator<NotBlankEmoji, String> {

        @Override
        public void initialize(NotBlankEmoji constraintAnnotation) {

        }

        @Override
        public boolean isValid(String value, ConstraintValidatorContext context) {
            return !containsEmoji(value);
        }

        public boolean containsEmoji(String value)
        {
            if (StrUtil.isBlank(value)) {
                return false;
            }
            boolean emoji = EmojiUtil.containsEmoji(value);
            return emoji;
        }
    }


}

步骤3:

在请求的实体使用这个注解,需要要在controller中加入@Validated注解,校验才会生效文章来源地址https://www.toymoban.com/news/detail-572326.html

@ApiModel("Hr结构人员教育经历")
@Data
public class HrWorkExperienceDto {
    @ApiModelProperty("证明人")
    @NotBlank(message = "证明人不能为空" )
    @Length(max=44, message = "证明人超过了44个字符" )
    @Xss( message = "证明人不能输入html特殊字符" )
    @NotBlankEmoji( message = "证明人不允许输入表情符号" )
    private String certifier;

}

到了这里,关于后端表情包依赖+自定义注解实现校验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot 中自定义数据校验注解

    在 Spring Boot 中,我们可以使用 JSR-303 数据校验规范来校验表单数据的合法性。JSR-303 提供了一些常用的数据校验注解,例如 @NotNull 、 @NotBlank 、 @Size 等。但是,在实际开发中,我们可能需要自定义数据校验注解来满足特定的需求。本文将介绍如何在 Spring Boot 中自定义数据校

    2024年02月10日
    浏览(48)
  • spring-boot 请求参数校验:注解 @Validated 的使用、手动校验、自定义校验

    spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。 spring-boot已经引入了基础包,所以直接使用就可以。 在属性上添加校验注解: 在Controller上添加 @Validated 注解 校验未通过时,可能看到: 在 @Validated 后面紧跟着追加BindingResult,

    2023年04月16日
    浏览(93)
  • Controller层自定义注解拦截request请求校验

    一、背景 笔者工作中遇到一个需求,需要开发一个注解,放在controller层的类或者方法上,用以校验请求参数中(不管是url还是body体内,都要检查,有token参数,且符合校验规则就放行)是否传了一个token的参数,并且token符合一定的生成规则,符合就不予拦截,放行请求,否则

    2024年01月17日
    浏览(45)
  • Springboot——@valid 做字段校验和自定义注解

    再项目开发中,针对前端传递的参数信息,有些接口中需要写大量的 if 判断,导致代码臃肿,不够优雅。 此时,可以使用 @Valid 实现基本的字段校验。 springboot 2.3之前 ,直接进行开发即可,无需引用额外的依赖 集成在 spring-boot-starter-web 中。 springboot 2.3之后 需要额外引入

    2023年04月26日
    浏览(50)
  • Java实现自定义注解

    (1)Java实现自定义注解其实很简单,跟类定义差不多,只是属性的定义可能跟我们平时定义的属性略有不同,这里会给大家详解,先来看代码: 上面代码就实现了一个 自定义注解 , 实现自定义注解需要最少指定 两个 基本条件 : ①注解的作用范围②注解的生命周期 ,那

    2023年04月19日
    浏览(28)
  • Java注解源码分析,实现自定义注解通过反射获取

    JDK5.0 引入,可以通过反射机制动态获取,大量应用于java框架中 内置注解 @Override 重写父类方法时 @Deprecated 使用它存在风险,可能导致错误 可能在未来版本中不兼容 可能在未来版本中删除 一个更好和更高效的方案已经取代它 @SuppressWarnings 告诉编译器忽略指定的警告,不用在

    2024年02月03日
    浏览(30)
  • Java 4种校验注解(值校验、范围校验、长度校验、格式校验)

    1 值校验 1.1 @NotNull注解 被注解的元素必须不为空,一般 用于数值类型的参数校验 @NotNull(message = \\\"用户编号不能为空\\\") private Integer userId; 1.2 @NotBlank注解 验证注解的元素值不为空(不为null、去除首位空格后长度为0),并且类型为String。 @NotBlank(message = \\\"用户名称不能为空\\\") pr

    2024年02月16日
    浏览(33)
  • springboot使用@Valid 和 @Validated 注解校验详解以及编写一个自定义全局异常类

    全局异常处理类 验证: ============================================== 导入所需要的包: 如果你是 springboot 项目,那么可以不用引入了,已经引入了,他就存在于最核心的 web 开发包里面。 如果你不是 springboot 项目,那么引入下面依赖即可: 新建三个实体类 实现一: 使用@Valid注解修

    2024年02月10日
    浏览(30)
  • 【Java】在实体类中常用的注解校验

    注解 说明 @Null 只能为null @NotNull(message = “id不能为空”) 必须不为null,可以为空字符串 @Min(value) 必须为一个不小于指定值的数字 @Max(value) 必须为一个不大于指定值的数字 @NotBlank(message = “姓名不能为空”) 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同

    2024年02月04日
    浏览(78)
  • @NotNull @NotEmpty @NotBlank java校验注解 validation

    1.@NotNull 不能为 null,但可以为 empty,一般用于判空 Integer 类型等基本数据类型,而且被其标注的字段可以使用 @size、@Max、@Min 对数值进行大小的控制 2.@NotEmpty 不能为 null,且长度必须大于 0,一般用于集合类或者数组上,也有人用于String(不推荐) 3.@NotBlank 只能作用在接收的

    2024年02月10日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包