2013-07-31 10 views
0

Java bean 유효성 검사에 타원형 http://oval.sourceforge.net/을 사용하고 있고 표현 언어 기능을 사용할 때 예외가 발생합니다.표현 언어가 포함 된 타원형

@NotNull(errorCode = "paymentCard.number.invalid", message = "Required", when = "_this.cardType != null") 
private String cardNumber; 

및 결과는 내가 왜 이런 일, 누군가가 나를 도울 수 모른다

WARNING: Cannot determine constraint when formula based on annotation $Proxy10 
java.lang.ArrayIndexOutOfBoundsException: 1 
    at net.sf.oval.AbstractCheck.setWhen(AbstractCheck.java:276) 
    at net.sf.oval.configuration.annotation.AbstractAnnotationCheck.configure(AbstractAnnotationCheck.java:183) 
    at net.sf.oval.configuration.annotation.AnnotationsConfigurer.initializeCheck(AnnotationsConfigurer.java:323) 
    at net.sf.oval.configuration.annotation.AnnotationsConfigurer.configureFieldChecks(AnnotationsConfigurer.java:143) 
    at net.sf.oval.configuration.annotation.AnnotationsConfigurer.getClassConfiguration(AnnotationsConfigurer.java:294) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 
31-Jul-2013 18:04:51 net.sf.oval.internal.Log info 
INFO: Available ScriptEngine language names: [[js, rhino, JavaScript, javascript, ECMAScript, ecmascript]] 

입니다 :

내 코드는 다음과 같습니다?

미리 감사드립니다.

답변

1

당신은 첫째로 구현이 사용 타원형을 나타내는 접두사를 작성해야하지만, 당신이 당신의 프로젝트에 사용할 표현 언어 구현을 등록 할 필요합니다. 이 단계가 없으면 Oval은 EL 표현식을 해결하기 위해 어떤 구현을 사용하고 있는지 파악할 수 없습니다.

private static final Validator VALIDATOR = new Validator(); 
static { 
    VALIDATOR.getExpressionLanguageRegistry().registerExpressionLanguage("js", 
      new ExpressionLanguageJavaScriptImpl()); 
} 
0

수식에 접두사를 추가해야합니다.

when="js:_this.cardType != null"