我在我的JSF项目中使用Bean验证。现在,我遇到了一种情况,在这种情况下,仅当验证先前的方法时,我才想验证方法。
我举一个例子:
@AssertTrue(message="{invalidCode}") private boolean isValidActivationCode() { ... } if(isValidActivationCode()) { @AssertTrue(message="{alreadyActivated}") private boolean isAlreadyActivated() { ... } }
由于我将收到每个参数的激活码,因此我想先对其进行验证。如果无效,将导致违规。如果是这样,我什至无法检查它是否已被激活(因为代码无效)。因此,是否有可能实现如上所述的任何功能(if语句的功能,我确实知道这是行不通的,但是它表明了我要完成的工作)。
提前致谢
更新资料
像Ravi K这样的解决方法提到:
@AssertTrue(message="{invalidCode}") private boolean isValidActivationCode() { ... } @AssertTrue(message="{alreadyActivated}") private boolean isAlreadyActivated() { return isValidActivationCode() ? ... : true; }
虽然我想知道,有没有一种干净的方法来解决这个问题?如果没有人很快提供答案,我将假定没有解决方案,并且我将接受Ravi K的解决方法作为此问题的答案。
好吧,我无法深入JSF注释方面,但是我很好奇为什么您不能简单地在isAlreadyActivated()中调用isValidActivationCode(),例如下面的内容,
@AssertTrue(message="{invalidCode}") private boolean isValidActivationCode() { ... } @AssertTrue(message="{alreadyActivated}") private boolean isAlreadyActivated() { if(isValidActivationCode()) { <Logic for isAlreadyActivated> ) }