2009-11-17 4 views
4

내 질문은 : 에 예를 들어, 그리드를 사용하는 클라이언트 측을 내 자바 EE 주석 엔티티 빈의 데이터를 전송하는 가장 좋은 방법은 무엇입니까? 당연히 각 엔티티에 대해 BaseModel 확장 클라이언트 모델을 수동으로 만들 수 있지만 여기서 가장 좋은 방법이 무엇인지 궁금합니다. 가능한 경우 단계별 자습서가 필요합니다.EXT GWT + 자바 EE

+0

이 정확한 이유 때문에 Ext GWT를 한 번 포기했습니다. – Bozho

답변

3
지금은 약 년 동안 EXT-GWT (GXT)를 사용하고 당신의 고통을 느낄 수 있었어요

! 여기

각 전략의 개요 것 :

  1. 가 작성

    내가 지금까지 배운 내용에서

    , 클라이언트와 서버 사이에 앞뒤로 콩을 transfering 3 개 전략이있는 것 같다 각 서버 측 객체 bean/pojo/entity bean에 대해 BaseModel을 확장하는 클라이언트 pojo/bean.

  2. 공유 POJO/빈의 클라이언트와 서버 사이
  3. 변환 서버 측 POJO는/클라이언트로 전송하고 다음 자바 스크립트 (JSON)을 사용하기 전에 JSON에 콩 클라이언트 측에서 객체.

은 물론, 각 무역 오프가 있습니다.

전략 # 1은 GXT에 잘 통합되어 있습니다. gxt에 내장 된 상점 및 바인딩을 사용할 수 있습니다. 이것은 프로덕션 응용 프로그램에서 사용한 전략이며 효과적이지만 클라이언트와 서버에서 빈을 복제하는 것이 지루하다는 것을 알게되었습니다. 개인적으로 extjs (및 gxt 's) 저장소/바인딩 메커니즘이 지나치게 복잡하고 구석의 경우 확장하기가 어려울 수도 있음을 발견했습니다.

전략 # 2 : 이것은 다음 gxt 프로젝트에서 주로 사용하는 전략입니다. 단점은 클라이언트에서 gxt로 자신 만의 폼과 그리드 바인딩을해야한다는 것입니다. 그러나 단점은 당신이 모든 콩/pojos을 공유 할 수 있다는 것입니다. 다음은 구현 세부 정보의 간단한 개요입니다.

서버 측 src 트리에서 .gwt.xml 파일을 서버 pojo/bean 클래스가 포함 된 루트 패키지에 추가합니다. 예를 들면 : 나는 com.daveparoulek.gwt.server.models

위의 예에서
<module rename-to='gwt-models'> 
    <inherits name='com.google.gwt.user.User' /> 
    <source path="client" /> 
</module> 

에서 "GWT-models.gwt.xml"라는 이름의이 파일을 생성, 콩 실제로 com.daveparoulek.gwt 내부에 위치 .server.models.client.

일단 설정을 마치면 gwt 클라이언트 프로젝트의 gwt.xml 파일에 "inherit"태그를 추가하여 com.daveparoulek.gwt.server.models에 src 코드를 포함하도록 클라이언트 gwt 프로젝트를 구성 할 수 있습니다 :

<inherits name="com.daveparoulek.gwt.server.models" /> 

전략 # 3 : GWT에 구글에서 몇 회담을 시청 한 후,이 클라이언트 측에서 개체를 처리하는 자신이 선호하는 방법이 될 것으로 보인다. 하지만 각 서버 측 pojo/bean에 대해 json 오버레이 유형을 생성합니다. 이것은 또한 gxt 세계에 완벽하게 맞지 않습니다. Click here이 개념에 대한 아주 좋은 소개.

+0

입력 해 주셔서 감사합니다. 늦게 답변드립니다. 나는 전략 # 3에 자신을 파묻고 gilead를 확인한 다음 어느 것이 나를 위해 최선인지 결정할 것입니다. – Pecc

+0

안녕하세요! 나는 전략 # 1을 수동으로 시도하기로 결정했다. 그러나 나는 그것에 대해 몇 가지 질문이 있습니다 : – Pecc

+0

- gwt는 rpc를 통해 엔티티 bean을 전송할 수없고 BeanModelFactory는 서버 측 gwt에서 사용할 수 없으므로 먼저 모든 엔티티에 대해 DTO 클래스를 작성해야합니다. rpc를 통해이 DTO를 생성 한 다음 클라이언트 측의 BeanModel로 변환합니다. 내가 맞습니까? – Pecc

0

나는 전문가가 아니에요하지만 사람들이 과정을 쉽게하기 위해 Gilead를 사용하여 (튜토리얼이있는) + GWT + GXT하는 것으로 보인다.

0

BeanModelFactory는 시간 낭비입니다. Sencha help docs에 따르면, 정적 인 get() 메소드에 대한 호출에서 BeanModelFactory가 반환하는 것에 대해 getFactory를 호출 할 수 있습니다. 예제를 보았을 때이 반환 값은 구현되지 않은 (추상) getFactory() 메서드가있는 BeanModelFactory 클래스 자체의 인스턴스로 밝혀졌습니다.

아무 것도없는 멋진 널 포인터를 얻을 수 있습니다. 고마워.

나는 전략 # 1을 고수 할 것이다.