1.パケットを確認してください
時には、我々は、例えば、IDとエンティティクラス、追加の時間が必要とされ、異なる状況下で異なる認証方法を使用して、どのようにエンティティクラスの方法を検証するために、更新のための時間を必要としますあなたはそれのようなエンティティを書いたり、2つの書き込みを選択したときに絶対必要である、これは何ですか?
カスタムデータ妥当性チェックの注釈ではプロパティグループは、このプロパティの役割は、それが何であるかを導入する必要性が指摘しますか?
次は、バリデーションクラスで複数のインターフェイスでどのように異なるの検証ルールを見てみましょう...
2.本章の目的
異なるルール間の複数のインタフェースを検証するための認証を実装するクラスを使用して...
3.固有コード
非常にシンプルな...
3.1輸入依存関係
pom.xmlでの追加spring-boot-starter-web
依存することができます
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lin</groupId>
<artifactId>springboot-validator-groups</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build />
</project>
3.2パケット検証
に異なるエアインタフェースクラスに書き込まれ、検証グループを定義
package com.lin.groups;
/**
* 验证组
* @author Mengmeng Lin
* @time 2019年1月29日 上午11:48:46
*/
public class Groups {
public interface update{
}
public interface Default{
}
}
3.3エンティティ・クラス
groups
プロパティの役割は、聞かせて@Validated
属性のみがあれば、検証の範囲に入りますと、より多くのことができる一致を確認注釈フィールドとその値を、我々はすべての新しいデータのために、我々はIDが存在するかどうかを検証する必要がないことを知っている、唯一の我々必要が使用するときの動作を変更しないので、IDフィールドに誘導があるだろうGroups.Update.class
他のフィールドを追加または変更は、それがまとめ使用する必要があるかどうかをされながら、どこへ行きますGroups.Default.class
...
package com.lin.pojo;
import java.math.BigDecimal;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import com.lin.groups.Groups;
public class Book {
@NotNull(message = "id 不能为空", groups = Groups.update.class)
private Integer id;
@NotBlank(message = "name 不允许为空", groups = Groups.Default.class)
private String name;
@NotNull(message = "price不允许为空", groups = Groups.Default.class)
private BigDecimal price;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
}
3.4制御層
作成しValidateController
たクラスを、その後、良い定義insert
、update
原因insertメソッドに記述されたので、ここで@Validated value属性、IDフィールドを気にしないよりも、両方の方法Groups.Default.class
それに;およびアップデート方法はので、ここで、IDが空であるかどうかを確認する必要があり@Validated value属性は、注釈を記述する必要がありますGroups.Default.class, Groups.Update.class
。必要があればなどのパケットでの動作を確認したデータの有効性を代表します...
package com.lin.controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.lin.groups.Groups;
import com.lin.pojo.Book;
@RestController
public class ValidateController {
@GetMapping("/insert")
public String insert(@Validated(value = Groups.Default.class) Book book){
return "success";
}
@GetMapping("/update")
public String update(@Validated(value = {Groups.Default.class, Groups.update.class}) Book book){
return "success";
}
}
3.5主な機能
package com.lin;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ApplicationValidateGroups {
public static void main(String[] args) throws Exception {
SpringApplication.run(ApplicationValidateGroups.class, args);
}
}
3.6テスト
準備事項、自己テストが完了するとApplicationValidateGroupsを開始することができ、テストでは、このようなブラウザ、郵便配達、JUnitの、闊歩、ここに基づき郵便配達として、誰もが慣れていないと考えていること、あなたは例外情報が十分に友好的でないとそれが来ると感じた場合、その後、同行一緒にSpringBootを学ぶために|第18章:グローバル例外を取得することは容易では入手しやすいことができます...
インターフェイスを挿入
インターフェイスの更新
二つのインタフェースパラメータは、不足idフィールド内容は同じですが、挿入が成功し、更新インタフェースは、idは空にすることはできません要求されます。
テストの結果は我々の期待に沿った、ことを示しています。
转自】【https://blog.battcn.com/2018/06/07/springboot/v2-other-validate3/