簡體   English   中英

Spring MVC 驗證:只需要一個字段

[英]Spring MVC validation: Only one field is required

我正在此 API 中創建一個新端點,它接受包含用戶名或 5 位或 9 位電話號碼的請求。 我需要添加驗證來驗證包含用戶名或電話號碼的請求; 如果兩者都提供,則返回驗證錯誤。 這是我擁有的當前代碼。

    @GetMapping("/users")
    @Operation(summary = "API to return users based on username or phone number")
    public ResponseEntity<List<UserResponseObject>> usersByNameOrNumber(
            @Valid @RequestParam(name = "phone-number", required = false) @Pattern(regexp = "^(\\d{5}|\\d{9})$") String userPhoneNumber,
            @Valid @PathVariable(name = "user-name", required = false) @Pattern(regexp = "^[a-zA-Z ]*$") String userName) {

            try {
                    ...
            } catch (Exception e) {
                    ...
            }
    }

如何修改此塊以滿足要求? 目前,這兩個字段都被標記為不需要,並且沒有進行驗證。 我希望它只需要這些字段之一不為空。

嘗試使用可選,我不知道你需要怎樣的解決方案。

@GetMapping("/users")
                @Operation(summary = "API to return users based on username or phone number")
                public ResponseEntity<List<UserResponseObject>> usersByNameOrNumber(
                        @Valid @RequestParam(value = "phoneNumber", required = false) @Pattern(regexp = "^(\\d{5}|\\d{9})$") Optional<String> phoneNumber,
                        @Valid @RequestParam(value = "userName", required = false) @Pattern(regexp = "^[a-zA-Z ]*$") Optional<String> userName) {
            
                        try {
                                        if(phoneNumber.isPresent()){} 
                                        if(userName.isPresent()){} 
                        } catch (Exception e) {
                                
                        }
                }

但我不確定 @Pattern 和 Optional 是否會正常工作,但可能是的。 也許是幫助,如果我很好理解你的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM