我在我的JSF項目中使用Bean驗證。 現在我遇到了一種情況,我只想在驗證前面的方法時驗證方法。有條件的Bean驗證
我舉一個例子:
@AssertTrue(message="{invalidCode}")
private boolean isValidActivationCode() { ... }
if(isValidActivationCode()) {
@AssertTrue(message="{alreadyActivated}")
private boolean isAlreadyActivated() { ... }
}
因爲我將每個參數收到激活碼,我想先驗證它。如果無效,將導致違規。如果是這樣,我甚至不能檢查它是否已經被激活(因爲代碼是無效的)。 那麼,是否有可能實現上述提到的任何東西(if語句的功能,我知道這不會起作用,但它顯示了我正在嘗試完成的任務)。
在此先感謝
更新
解決辦法像拉維ķ提到:
@AssertTrue(message="{invalidCode}")
private boolean isValidActivationCode() { ... }
@AssertTrue(message="{alreadyActivated}")
private boolean isAlreadyActivated() { return isValidActivationCode() ? ... : true; }
雖然我不知道,有沒有辦法解決這個乾淨的方法嗎? 如果沒有人很快提供答案,我會認爲沒有乾淨的解決方案,我會接受來自Ravi K的解決方法作爲解決此問題的答案。
因爲這樣的方法isAlreadyActivated仍然會執行,我的信息還是會被拋出。只有這樣我才能操縱這個,如果代碼無效,總是會拋出true,所以這絕不會導致違規。但是,這就像一個解決方法,而不是一個很好的解決方案,不是嗎? – Aquillo
是的你是對的,這只是一個解決方法。如果你想要尋求完美的解決方案,那麼這將變得更加困難。在下一個答案中,讓我給你2個更多選項。 –