簡體   English   中英

Spring MVC 驗證顯示多條錯誤消息

[英]Spring MVC Validation shows multiple error messages

嘗試在 Spring MVC 中執行驗證時遇到了一些問題。 這是我的驗證器 class:

@Component
public class LossOfCardValidator implements Validator {
public boolean supports(Class clazz) {
    return SingleReplacementForm.class.equals(clazz);
}

public void validate(Object obj, Errors e) {
    SingleReplacementForm p = (SingleReplacementForm) obj;

    // check empty
    ValidationUtils.rejectIfEmpty(e, "contactNumber", "NotNull.contactNumber");
    
    // check integer
    if (!p.getContactNumber().matches("[0-9]+")) {
        e.rejectValue("contactNumber", "Format.contactNumber");
    }
}

在我的 Controller 中,我這樣稱呼它:

LossOfCardValidator validator = new LossOfCardValidator ();
validator.validate(singleReplacementForm, bindingResult);

它確實執行了驗證。 但是,如果我沒有在聯系電話字段中輸入任何內容,則會顯示兩條錯誤消息。 無論如何修改它,首先它會檢查該字段是否為空,如果不是然后繼續檢查格式以便每次都只顯示一條錯誤消息?

謝謝!

您可以在Error error object 上使用getFieldErrorCount方法來檢查contactNumber字段上是否已經存在錯誤。 像這樣:

// check integer
if (e.getFieldErrorCount("contactNumber") <= 0 && !p.getContactNumber().matches("[0-9]+")) {
    e.rejectValue("contactNumber", "Format.contactNumber");
}

這是具有最小更改集的最簡單修復。 您絕對應該查看@NotNull@Pattern注釋驗證。

暫無
暫無

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

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