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

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

如何驗(yàn)證 List 類型的@RequestParam的大小

如何驗(yàn)證 List 類型的@RequestParam的大小

至尊寶的傳說 2022-09-07 16:55:51
我正在創(chuàng)建一個(gè) Spring-Boot 微服務(wù) REST API,該 API 的類型為 .如何驗(yàn)證列表是否包含最小值和最大值?@RequestParamList<String>到目前為止,我已經(jīng)嘗試使用應(yīng)該支持集合的功能()。@Size(min=1, max=2)javax.validation.constraints.Size我還嘗試添加參數(shù)和注釋,但沒有成功。@ValidBindingResult@Size我更喜歡使用類似于第一個(gè)示例的解決方案,該解決方案更緊湊,更整潔。這是針對(duì)Spring-Boot 2.1.2.RELEASE的。@Size(min=1, max=2)@RestControllerpublic class MyApi {    @GetMapping(value = "/myApi", produces = { APPLICATION_JSON_VALUE })    public ResponseEntity<List<MyObject>> getSomething(@Valid @RequestParam(value = "programEndTime", required = false) @Size(min = 1, max = 2) List<String> programEndTime, BindingResult result) {        if (result.hasErrors()) {            System.out.println("Error");        } else {            System.out.println("OK");        }    }}我希望能夠到達(dá)該行,但實(shí)際上它被跳過了。System.out.println("Error")
查看完整描述

3 回答

?
HUH函數(shù)

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

如果使用方法參數(shù)驗(yàn)證,則應(yīng)使用 對(duì)控制器進(jìn)行批注,如文檔所述:@Validated


要獲得 Spring 驅(qū)動(dòng)方法驗(yàn)證的資格,所有目標(biāo)類都需要使用 Spring 的注釋進(jìn)行注釋。((可選)還可以聲明要使用的驗(yàn)證組。有關(guān) Hibernate Validator 和 Bean Validation 1.1 提供程序的設(shè)置詳細(xì)信息,請(qǐng)參閱 javadoc。@ValidatedMethodValidationPostProcessor


這意味著您應(yīng)該將代碼更改為:


@Validated // Add this

@RestController

public class MyApi {

    // ...

}

之后,如果驗(yàn)證不匹配,它將拋出一個(gè)。ContraintViolationException


但請(qǐng)注意,由于您只有注釋,因此如果您不提供 ,則集合將是,并且該集合也將有效。如果不希望這樣做,則還應(yīng)添加批注,或從 中刪除值。@Size()programEndTimenull@NotNullrequired = false@RequestParam


不能使用 though 來檢索錯(cuò)誤,因?yàn)檫@僅適用于模型屬性或請(qǐng)求正文。您可以做的是為 定義一個(gè)異常處理程序:BindingResultConstraintViolationException


@ExceptionHandler(ConstraintViolationException.class)

public void handleConstraint(ConstraintViolationException ex) {

    System.out.println("Error");

}


查看完整回答
反對(duì) 回復(fù) 2022-09-07
?
桃花長(zhǎng)相依

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

根據(jù) Bean Validator 2.0、Hibernate Validator 6.x,您可以直接在參數(shù)化類型上使用約束。


@GetMapping(path = "/myApi", produces = { APPLICATION_JSON_VALUE })

public ResponseEntity<List<MyObject>> getSomething(@RequestParam(value = "programEndTime", required = false) List<@Size(min = 1, max = 2) String> programEndTimes)

有關(guān)詳細(xì)信息,請(qǐng)查看容器元素約束。


查看完整回答
反對(duì) 回復(fù) 2022-09-07
?
慕妹3242003

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

您可以使用類和@RequestBody進(jìn)行參數(shù)驗(yàn)證,這像我一樣成功。


public class Test {

    @Size(min = 1 , max = 5)

    private List<String> programEndTime;


    public List<String> getProgramEndTime() {

        return programEndTime;

    }


    public void setProgramEndTime(List<String> programEndTime) {

        this.programEndTime = programEndTime;

    }

}

    @PostMapping("test")

    public void test( @Valid   @RequestBody Test test,

                     BindingResult result){

        if (result.hasErrors()) {

            System.out.println("Error");

        } else {

            System.out.println("OK");

        }

        System.out.println(",.,.");

    }


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

添加回答

舉報(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)