【问题标题】:How can i merge(make common) validation criteria for spring boot and angular?我如何合并(通用)spring boot 和 angular 的验证标准?
【发布时间】:2026-01-13 19:35:01
【问题描述】:

现在我分别在 Spring Boot 和 Angular 中实现验证
它工作正常 但是,
当我的验证标准发生变化时,需要在双方都进行更改并重新部署两者
我们可以有任何解决方案,我们在一个地方更改并且将适用于双方吗?

Java 代码

@NotBlank(message = "Address is required.")
@Size(max = 300, message = "Allowed upto 300 characters for address.")
private String address;

角度代码
TS 文件

'address': [null, Validators.compose([Validators.required])],

HTML 文件

<textarea
     [maxlength]="utilsService.validationService.MAX_300"
     [formControl]="registrationForm.controls['address']">
</textarea>

【问题讨论】:

    标签: angular spring-boot validation angular-validation spring-validator


    【解决方案1】:

    请理解,UI 和 API 验证不一定始终保持不变。

    无论如何,目前我能想到的两种方法 -

    1. 您可以编写验证服务,将整个 json 有效负载传递到验证端点。您可以从 UI 和后端调用它,并返回响应成功或验证失败的详细信息。

    2. 使用一些规范文档,JSON/YML 可用于验证请求。请参阅下面的链接,其中显示了如何根据 open-api 规范验证 JSON 请求。 Spring Boot 后端和 Angular UI 可以使用相同的规范文件进行验证,然后您将其提交到您的存储库,供前端和后端使用。

    https://github.com/kogosoftwarellc/open-api/tree/master/packages/openapi-schema-validator

    https://springframework.guru/using-swagger-request-validator-to-validate-spring-cloud-contracts/

    https://openapi.tools/

    【讨论】:

      【解决方案2】:

      我们已经解决了简单验证规则的任务,验证单个字段并正在研究更复杂情况的解决方案。

      我们的解决方案将来自 bean 验证(使用反射)的所有验证规则作为元数据负载通过 json 发送到客户端,当且仅当客户端通过 http 标头请求此。通常您只需发送一次验证规则。

      在客户端,我们使用 JavaScript 解释这些规则并进行验证。

      一开始有些工作,但从长远来看是有回报的。

      将多个字段绑定在一起的复杂验证规则实施起来更加麻烦。像 SpEL od UEL 这样​​的表达式语言似乎很有前途。不幸的是,几乎没有任何实现在两边都运行相同的 EL。

      这些实现中的一个是 spel2js,但它已经有几天了,显然不再受到积极支持。

      另一种方法是直接在服务器端使用 JavaScript。在 JavaScript 中为 Java 定义验证规则似乎有点奇怪,但与许多其他解决方案相比,直接在客户端运行 JavaScript 要容易得多。我们正在研究这种方法。

      【讨论】:

        最近更新 更多