2010-11-22 3 views
12

JSR 303 유효성 검사를 사용하는 Spring 백엔드로 GWT 애플리케이션을 개발 중입니다. 애플리케이션을 오프라인으로 전환 한 다음 브라우저 HTML5/Gears 데이터베이스를 대신 사용할 수 있습니다.GWT JSR 303 클라이언트 인증

클라이언트 유효성 검사를 구현하는 가장 좋은 방법은 무엇입니까? 지금까지 gwt 유효성 검사 프레임 워크 (http://code.google.com/p/gwt-validation/)를 찾았지만 더 이상 사용하지 않는 것 같습니다.

감사합니다.

UPDATE :

JSR 303 콩 검증 (link here)를 지원하는 새로운 GWT 공식 프로젝트가 있습니다. IMO 프로젝트가 충분히 성숙되면이 방법을 사용할 수 있습니다.

답변

13

유효성 확인 프레임 워크는 클라이언트 및 서버 측 데이터 입력 유효성 검사 프레임 워크입니다. 그 역할은 클라이언트에서 서버로 전달되는 데이터의 비즈니스 규칙 준수를 보장하는 것입니다.

유효성 검사 프레임 워크는 "JSR 303 : Bean Validation"사양을 구현하는 GWT 유효성 검사 프로젝트를 사용합니다.

아이디어는 데이터 전송 개체 (DTO) 클래스와 필드를 JSR303 주석으로 장식하여 유효성 규칙을 설명하는 것입니다.

  1. 각 데이터 전송 객체는 고유 한 유효성 검사 주석으로 장식되어야합니다.
  2. 각 서버 측 서비스 구현은 클라이언트에서받은 데이터 전송 객체의 유효성을 검사해야합니다.
  3. 클라이언트 측에

,

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

은 DTO들 구현 확인하여 GWT 모듈 XML 파일에 당신이 (당신의 클래스 패스에 항아리와 함께)를 추가해야합니다 프로젝트에 GWT 유효성 검사를 사용하는 com.google.gwt.validation.client.interfaces.IValidatable

은 서버에서 클라이언트 측 사용

com.google.gwt.validation.client.interfaces.IValidator.validateProperty((T) model, propertyName); 

에 확인하려면 측면 사용

com.google.gwt.validation.server.ServerValidator 

제대로 설정하는 데 약간의 작업이 있지만 완벽하게 작동합니다. https://developers.google.com/web-toolkit/doc/latest/DevGuideValidation

그것은 최대 절전 모드 검사기가 사용

+0

이것은 정확히 내가 찾고 있던 것입니다! 답변에서 찾고 있던 링크가 http://code.google.com/p/gwt-validation/이라고 가정합니다. –

+1

JSR 303을 지원하는 GWT 공식 프로젝트는 GWT2.4부터 잘 작동하며 IValidatable을 구현할 필요가 없으며 http://code.google.com/p/google-web-toolkit/wiki에서 필요한 모든 것을 찾을 수 있습니다./BeanValidation. 클라이언트 및 서버 측 모두 도메인 객체 또는 DTO에서 하나의 주석으로 덮 힙니다. – koma

+0

이것은 죽은 프로젝트입니까? 나는 그것을 사용하고 싶지만 내가 그것을 신뢰할 수 있는지 안다!? – HaveAGuess

4

아직 사용하지는 않았지만 GWT 2.1에는 유효성 검사 지원이 일부 포함되어 있습니다.

ShowCase example을 확인하십시오.

+0

감사의 유효성을 검사합니다. 이 예는 사용자 입력을 수동으로 검증하는 사용자 정의 셀을 작성하는 방법을 보여줍니다. 필자가 피하고자하는 것은 클라이언트와 서버에 내 유효성 검사를 두 번 작성해야한다는 것입니다. –

+0

@Javier, 어디에서나 유효성 검사를 수행하기 위해 데이터 유효성에 대해 충분히 신경 쓰면 서버 측에서 유효성 검사를 수행해야합니다. 클라이언트 측 유효성 검사는 사용자의 시간과 노력을 절약하는 좋은 기능입니다. – sarnold

+0

포인터를 주셔서 감사합니다, 나는 그것을 시도 할 것입니다 –

6

GWT 2.5 그냥이의 새로운 기능이 있습니다.

1) AbstractGwtValidatorFactory를 확장하고 빈을 적용해야합니다. :

public final class SampleValidatorFactory extends AbstractGwtValidatorFactory { 

    /** 
    * Validator marker for the Validation Sample project. Only the classes and groups listed 
    * in the {@link GwtValidation} annotation can be validated. 
    */ 
    @GwtValidation(Person.class) 
    public interface GwtValidator extends Validator { 
    } 

    @Override 
    public AbstractGwtValidator createValidator() { 
    return GWT.create(GwtValidator.class); 
    } 
} 

2) 다음을 gwt에 추가하십시오.XML :

<inherits name="org.hibernate.validator.HibernateValidator" /> 
<replace-with 
    class="yourpackage.SampleValidatorFactory"> 
    <when-type-is class="javax.validation.ValidatorFactory" /> 
</replace-with> 

3) 여러분의 빈 대답 카를로스에 대한

Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); 
Set<ConstraintViolation<Person>> violations = validator.validate(person); 
+0

죄송합니다. 질문에 대한 답변이이 답변과 비슷한 것으로 업데이트되었습니다. – rjdkolb