Hasor 場(chǎng)景化驗(yàn)證

2018-10-09 11:43 更新

場(chǎng)景化表單驗(yàn)證,是指在執(zhí)行表單驗(yàn)證時(shí)。開發(fā)者可以通過傳給表單驗(yàn)證器的場(chǎng)景名稱,進(jìn)行必要的邏輯判斷。我們以用戶帳號(hào)信息驗(yàn)證為例,下面表單驗(yàn)證器中定義了兩個(gè)場(chǎng)景的驗(yàn)證方法:

  1. doValidLogin、負(fù)責(zé)處理登錄
  2. doValidSignUp、負(fù)責(zé)處理注冊(cè)


public class LoginFormValidation4Scene implements Validation<LoginForm4Scene> {
    //
    // - 登錄驗(yàn)證
    private void doValidLogin(LoginForm4Scene dataForm, ValidInvoker errors) {
        ...
    }
    // - 注冊(cè)登錄
    private void doValidSignUp(LoginForm4Scene dataForm, ValidInvoker errors) {
        ...
    }
    //
    public void doValidation(String validType, LoginForm4Scene dataForm, ValidInvoker errors) {
        // -通用驗(yàn)證邏輯
        if (StringUtils.isBlank(dataForm.getAccount())) {
            errors.addError("account", "帳號(hào)為空。");
        }
        if (StringUtils.isBlank(dataForm.getPassword())) {
            errors.addError("password", "密碼為空。");
        }
        if (!errors.isValid()) {
            return;
        }
        // -場(chǎng)景化差異
        if (StringUtils.equalsIgnoreCase("signup", validType)) {
            this.doValidSignUp(dataForm, errors);   // 注冊(cè)
            return;
        }
        if (StringUtils.equalsIgnoreCase("login", validType)) {
            this.doValidLogin(dataForm, errors);    // 登錄
            return;
        }
    }
}


最后,在使用表單驗(yàn)證時(shí),我們?cè)?@Valid 注解上設(shè)定好要使用的場(chǎng)景名稱,就可以了。

@MappingTo("/scene/login.do")
public class Login4Scene {
    public void execute(@Valid("login") @Params LoginForm4Scene loginForm,
                        RenderInvoker invoker,
                        ValidInvoker valid) {
        ...
    }
}


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)