gwt
  • gwt-validation
  • 2012-01-26 3 views 1 likes 
    1

    Gwt-Validation과 Gwt 2.4.0을 사용하고 싶습니다. 내 gwt.xml 파일에있는gwt-2.4.0을 사용하여 gwt-validation을 설치하는 방법

    :

    <inherits name="javax.validation.Validation" /> 
        <inherits name="com.google.gwt.validation.Validation" /> 
        <inherits name='com.em.validation.Validation' /> 
    

    처럼 문서에서, 나는 다음과 같은 코드를 가지고 :

    import javax.validation.Validator; 
    import javax.validation.ValidatorFactory; 
    ... 
    
    ValidatorFactory factory = 
        Validation.byDefaultProvider().configure().buildValidatorFactory(); 
    
    Validator validator = factory.getValidator(); 
    

    문제는 내가 다음과 같은 오류를 가지고있다 :

    지연된 바인딩 결과 유형 'javax.validation.ValidationFactory'는 추상적이어서는 안됩니다. 주로와

    는 // ... 아름다운 스택 트레이스 :

    가 'javax.validation.ValidatorFactory'(? 당신이 필요한 모듈을 상속하는 것을 잊지 를 않았다)

    내 치어 실패 바인딩 연기. xml은 다음을 포함합니다 :

    <dependency> 
        <groupId>com.googlecode.gwt-validation</groupId> 
        <artifactId>gwt-validation</artifactId> 
        <version>2.0</version> 
    </dependency> 
    <dependency> 
        <groupId>javax.validation</groupId> 
        <artifactId>validation-api</artifactId> 
        <version>1.0.0.GA</version> 
        <scope>provided</scope> 
    </dependency> 
    <dependency> 
        <groupId>javax.validation</groupId> 
        <artifactId>validation-api</artifactId> 
        <version>1.0.0.GA</version> 
        <classifier>sources</classifier> 
        <scope>provided</scope> 
    </dependency> 
    

    어떻게해야합니까? 감사합니다. .

    답변

    1

    자바 가져 오기에 문제가있었습니다. 다음 코드에서

    는 :

    ValidatorFactory factory = 
        Validation.byDefaultProvider().configure().buildValidatorFactory(); 
    Validator validator = factory.getValidator(); 
    

    나는 수입 :

    com.google.gwt.validation.client 대신 javax.validation

    없음 오류 자바에서 컴파일 시간! gwt 컴파일 타임 (또는 호스트 된 모드의 런타임)에서 위의 오류 만.

    +0

    이것은 꽤 일반적인 문제입니다. 나는 새로운 단위 테스트를 추가 할 때 저번에 그 일을했습니다. –

    0

    내 GWT.XML 파일이 있습니다

    <inherits name="org.hibernate.validator.HibernateValidator" /> 
    <replace-with class="com.example.client.MyValidatorFactory"> 
        <when-type-is class="javax.validation.ValidatorFactory" /> 
    </replace-with> 
    

    내가 이렇게 MyValidatorFactory 정의 : 내 클래스 경로에서
    public final class MyValidatorFactory extends AbstractGwtValidatorFactory { 
    
        /** 
        * Validator marker for the Validation Sample project. Only the classes 
        * listed in the {@link GwtValidation} annotation can be validated. 
        */ 
        @GwtValidation(value = { Customer.class, License.class, Account.class }) 
        public interface MyValidator extends Validator { 
        } 
    
        @Override 
        public AbstractGwtValidator createValidator() { 
         return GWT.create(GwtValidator.class); 
        } 
    } 
    

    내가 가진 :

    hibernate-validator-4.2.0.Final-sources.jar 
    hibernate-validator-4.2.0.Final.jar 
    

    지금 당신은 할 수 있습니다 도메인 개체의 유효성을 검사합니다.

    (210)
    Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); 
        Set<ConstraintViolation<Account>> violations = validator.validate(account); 
    

    그리고 같은 검증 후 도 작동하는 서버 측 :

    private static ValidatorFactory factory = Validation.byDefaultProvider().configure().buildValidatorFactory(); 
    Set<ConstraintViolation<DomainResource>> violations = factory.getValidator().validate(account); 
    

    좋은 물건!

    +0

    답변 해 주셔서 감사합니다. 그러나 최대 절전 모드를 사용하고 있지 않습니다. –

    +0

    당신은 이것을 위해 최대 절전 모드를 사용하지 않아도되고 최대 절전 모드를 사용하지 않을 수도 있습니다. 그러나 hibernate-validator는 서버 측에서 유효성을 검증하는 기본 프로 바이더이다. – koma

    관련 문제