第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在持久化之前啟用 Spring Bean 驗(yàn)證但忽略 HTTP 請(qǐng)求

如何在持久化之前啟用 Spring Bean 驗(yàn)證但忽略 HTTP 請(qǐng)求

精慕HU 2023-02-16 16:23:40
這是我的場(chǎng)景class B {   @NotNull    String x;}class A {    @Valid    B b;    @NotNull    String y;} 現(xiàn)在我的 Http POST 請(qǐng)求獲得一個(gè)對(duì)象class A作為有效負(fù)載。String y應(yīng)該在傳入的 HTTP 請(qǐng)求中進(jìn)行驗(yàn)證(并且在持久化到數(shù)據(jù)庫(kù)之前也進(jìn)行驗(yàn)證)。但是,String x不應(yīng)在傳入的 HTTP 請(qǐng)求中驗(yàn)證(并且僅在持久保存到 DB 之前驗(yàn)證),因?yàn)镾tring x在請(qǐng)求中將為 null,并且其值將在完整class A對(duì)象持久保存之前由業(yè)務(wù)邏輯設(shè)置。有什么辦法可以做到這一點(diǎn)?
查看完整描述

3 回答

?
溫溫醬

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果可以編輯這些對(duì)象,則可以使用驗(yàn)證組;


class B {

    @NotNull(groups = Ignored.class)

    String x;

}


class A {

    @Valid

    B b;


    @NotNull

    String y;

在哪里Ignored;


import javax.validation.groups.Default;


public interface Ignored extends Default {

}

如果你的控制器沒(méi)有定義這個(gè)組,它下面的任何注釋都將被忽略,因此你的要求將得到滿足,請(qǐng)求中的驗(yàn)證B.x將被忽略,但其他字段A將被驗(yàn)證。但我不是 100% 確定驗(yàn)證將在數(shù)據(jù)庫(kù)端應(yīng)用,你可以試試嗎?


否則你可以嘗試做;


@RestController

public class Controller {


    @PostMapping("/etc")

    ResponseEntity<String> addA(@RequestBody A a) { //disabled validation here

        B tempB = a.getB();

        a.setB(null);

        validateA(a);

        a.setB(tempB);

        // continue logic

    }

}

在哪里validateA();


import org.springframework.validation.annotation.Validated;


@Validated

public class Validator {


    public void validateA(@Valid A a) {

        // nothing here

    }

}

這是一個(gè)丑陋的解決方案,但仍然是一個(gè)解決方案......


查看完整回答
反對(duì) 回復(fù) 2023-02-16
?
HUH函數(shù)

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊

我認(rèn)為您缺少在將在控制器層中驗(yàn)證的參數(shù)上添加 @Vaild 注釋。


@RestController

public class AController {


    @PostMapping("/a")

    ResponseEntity<String> addA(@Valid @RequestBody A a) {

        // persisting the a entity 

        return ResponseEntity.ok("A is valid");

    }

}


查看完整回答
反對(duì) 回復(fù) 2023-02-16
?
qq_遁去的一_1

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊

實(shí)際上,如果“@Valid”注釋沒(méi)有作為參數(shù)前綴,它不會(huì)影響,@Jonathan 解釋道。


要在持久化之前啟用驗(yàn)證,它的工作方式如下:


@Repository

@Validated

public MyDao {

    public void insertA(@Valid A a){

        //logic here

    }


}

@Validated(org.springframework.validation.annotation.Validated) 是啟用參數(shù)驗(yàn)證的關(guān)鍵。這個(gè)對(duì)我有用。


查看完整回答
反對(duì) 回復(fù) 2023-02-16
  • 3 回答
  • 0 關(guān)注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)