Spring REST如何以不同的方式验证请求体?

2023-12-13

With @Valid我们可以解析请求正文并使用注释对其进行验证,例如@NotEmpty, @Size(min = 5)。有没有一种方法可以有多种方法来验证身体?例如,在某些端点上,我想忽略一些验证器(@NotNull就我而言)。

我的猜测是创建一个自定义注释,例如@ValidUnlessNull,但是我怎样才能实现它的解析器而不必做以下工作@RequestBody(我试图实现一个Filter and a HandlerMethodArgumentResolver)?


您可以定义自定义验证组并选择任何组@Validated注解。

1) 定义空接口,将用作验证组标识符:

public interface FirstValidateGroup{}

2)给指定接口(组)绑定验证注解:

public class Person{

    @NotBlank(groups = {FirstValidateGroup.class})
    private String firstName;
    @NotBlank
    private String lastName;

    //... getters and setters
}

请注意,您可以为一个属性绑定多个组。

3)选择验证组@Validated注解:

public ResponseEntity<Person> add(@Validated({FirstValidateGroup.class}) 
                                  @RequestBody Person person){
   ...
}

现在只firstName属性将被验证。您可以在中指定多个组@Validated注解。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring REST如何以不同的方式验证请求体? 的相关文章

随机推荐

  • 如何使用guard语句来检测赋值后的nil?

    我正在尝试使用 Guard 语句来检查是否为零 我很困惑为什么以下内容让它漏掉并生成 BAD EXEC 错误 guard let event Event eventsImagesLoading removeValueForKey locat
  • PDO_OCI - 进入 clob 字段

    我想在 Oracle DB 中插入一些 base64 编码的数据 每个字段最多 500 000 个字符 因为在我开始使用 PDO 并将字段设置为 CLOB 之前 我没有将 Oracle 与 PHP 一起使用 我的代码的简短版本 Db 类扩展
  • 在 Box2D 中制作漩涡

    我试图通过施加力在 C Objective C 上的 Box2D 中制作螺旋涡流 我想实现的是一个将物体从一个点推开或吸引它们的漩涡 我想我必须施加不止一种力量 我解决这个问题的切入点是 我想我必须施加三种力量 吸引或排斥身体中心的冲动 想
  • 将方法传递给迭代器方法时发生了什么

    众所周知 谁可以通过 a 将方法传递给迭代器方法 prefix 例如 a b map upcase gt A B def rettwo 2 end a b map rettwo gt 2 2 问题是 当我编写一个方法时 传递一个方法 前缀
  • 取出字符串中所有其他单词的算法?

    在 Javascript 中 如果我有一个像这样的字符串 你好 很高兴见到你 我希望返回的是奇怪地方的单词 这样我就会得到 你好 我怎样才能为此编写代码 您可以使用filter创建一个包含偶数索引元素的新数组 请记住 奇数 位置中的单词实际
  • 在完整节点中使用缩略图进行上一个/下一个节点导航

    我一直在试图解决这个问题并使其发挥作用 但由于我不是程序员 只是一名编码知识有限的设计师 所以我在这方面一直碰壁 我正在制作自己的照片库 我想将前两张或下一张图像显示为链接的缩略图 我发现这个脚本可以工作并显示文本链接 但不知道如何使其适应
  • 格式化日期的简单方法

    我写了一个 perl 脚本来获取日期时间 它确实有效 但我确实想知道是否有更简单的方法将日期格式设置为输出 usr bin perl use DateTime my dt DateTime gt now time zone gt local
  • Webapi 在本地工作,但在使用子域托管时无法工作

    我正在构建一个简单的 Web api 它从数据库检索客户余额 在 IIS 本地托管的一切都运行良好 该 api 从正文中获取一个参数 public static void Register HttpConfiguration config
  • fragment.onCreateView 导致空指针异常

    所以我正在使用片段并尝试在它们上连接点击侦听器 public View onCreateView LayoutInflater inflater ViewGroup container Bundle savedInstanceState V
  • Django:存储图像数据库

    早些时候我使用默认数据库 sqlite3 但今天我将其更改为 postgresql 我想将图像文件保存在数据库中而不是项目目录本身中 我怎样才能做到这一点 将图像存储在数据库中并不是一个好主意media文件夹 但你可以使用二进制字段为了这
  • Unicode 中可能的组合字符序列

    有些字符未包含在 Unicode 中 即带重音的西里尔字母 但可以使用组合序列创建 据我了解 可能的组合字符序列是在布局引擎和 或使用的字体中定义的 我对吗 那么 如何得到所有可能的组合序列呢 您是正确的 尝试创建任意组合序列对于布局引擎和
  • 如何只打印文本?

    我正在尝试将一些文本发送到打印机 我只需要打印文本 在页边距处包裹并在必要时流到另一页 这是我现在正在做的一个最小的例子 FXML private void print TextArea printArea new TextArea tex
  • 向数组添加一个元素

    我正在从源读取数据作为数组 一个 我需要向数组中再添加一个元素 获得数组后 我创建一个容量为 n 1 的新数组 并将所有元素复制到新数组中 并将新元素作为数组的最后一个元素 我可以做这个 有一个更好的方法吗 尤其是 Linq 您所描述的实际
  • 如何与 dart 中的 js 交互?

    不 这与同名的其他问题不同 有一些看似相同的包可以做到这一点 但具有不同的 api http dart lang github io js interop docs js html https api dartlang org docs c
  • 输入按钮 onClick 删除最接近的 div

    呃 为什么这不起作用 我多次在我的网站上使用类似的代码 但现在不起作用 HTML div span a span div
  • 可以点击jquerydraggableparent开始拖动吗?

    我有这样的标记 div div div div 用这样的JS colorpicker selector draggable containment colorpicker background handle colorpicker sele
  • 来自 ant 的空 Junit 报告

    我正在尝试使用 ant 运行 junit 测试并生成报告 我能够成功运行测试 但报告文件为空 我究竟做错了什么 这是我的 build xml
  • 我应该使用什么来代替 iOS7 中已弃用的 GKLeaderboardViewController?

    我为 IOS 7 更新了我的应用程序 游戏中心有一些已弃用的内容 例如加载和关闭排行榜和成就 我该如何修复它们 它说 GKLeaderboardViewController 已弃用 IBAction LeaderBoardsButton i
  • DLL 的 .NET 混淆:如何保护我的代码?

    我正在探索与一家小公司建立合作伙伴关系 该公司正在寻找一种可以提高利润的算法 我有一些可以帮助他们的原型软件 我的软件核心是非常保密的 如果公司拿到了 他们肯定就不需要我了 我肯定会和他们签合同 我会有法律保护 但我仍然想在他们和我的 商业
  • Spring REST如何以不同的方式验证请求体?

    With Valid我们可以解析请求正文并使用注释对其进行验证 例如 NotEmpty Size min 5 有没有一种方法可以有多种方法来验证身体 例如 在某些端点上 我想忽略一些验证器 NotNull就我而言 我的猜测是创建一个自定义注