2010-01-14 2 views
1

플렉스 프론트 엔드가있는 자바 백엔드를 사용하고 있습니다. 그리고 내가 값 객체와 같은 indepth 속성을로드하지 않는 labelfunction을 사용하고자 할 때, 그것은 플렉스면에로드 된 게으른 것 같아요. 왜냐하면 내가 체크했기 때문에 그것이 백엔드에서 오지 않을 것이라고 확신합니다. 뒤엎다.값 객체의 플렉스로드로 인한 문제 (프런트 엔드에서 지연로드)

DataGrid에서도 모든 값을 한 번에로드하지 않습니다. 예를

나는 모든 존의 수 내 백 엔드에 문의
Class John{ 
var name:String; 
var lastName:Doe; 

} 

Class Doe{ 
var lastName:String; 
} 

에 대한

는 백엔드 나에게주는 미상의 포함 된 모든 존의. 이제 플렉스 사이드에서 나는 콜 레스 폰더로부터 결과 이벤트를받습니다. 그러나 아직도 그것은 미상인들이 존스에 접근 할 수 없으며, 존의 미상 재산은 여전히 ​​null입니다. 내가 Doe 's에 대해 두 번째로 물을 때 프런트 엔드 방식으로 게으른 로딩처럼 보입니다.

내가 뭘 잘못하고 있니?

답변

0

좋아, 지금은 완전한 MVC 아키텍처를 사용하고 있는데이 것을 왜 그랬는지는 아직 모르겠지만, 난 평면 DTO의의를 사용하여 그것을 해결했습니다 접견 ...

1

그것은 까다로운 당신의 질문을 완전히 이해합니다. 그러나, 나는 많은 시간,이 선에 따라서 문제가 있었다. 그래서 나는 일반적인 문제를 겪는다.

BlazeDS에서 기억해야 할 점 중 하나는 네트워크를 통해 전송되는 클래스가 직렬화되고 직렬화 해제된다는 것입니다. 네트워크를 통해 작성되고 읽혀지는 유일한 것들이 각 클래스의 필드/속성이라는 것을 단순화 된 의미로 의미합니다. 자바 측과 플렉스 측 모두에서 클래스의 기본 데이터 유형에주의를 기울여야한다. 모든 속성/필드와 공용 getter/setter가 일치하는지 확인하고 명확한 지 확인하십시오.

"명확한"의미는 BlazeDS가 어떤 변수를 어디에 고정해야 하는지를 알 수 없을 때 혼란스러워집니다.

Doe 클래스는 String이 아니지만 문자열 만 포함합니다. 따라서 네트워크를 통해 전송되면 문자열처럼 보입니다. 이런 경우에, 나는 블레이즈가 혼란스러워하는 것을 보았습니다. 그것은 두 개의 문자열이 네트워크를 통해 들어오는 것을 보았고 어디로 가는지 알 수 없습니다. 당신에게 John은 "Doe"와 문자열을 포함하지만 BlazeDS는 모두 String과 String입니다.

기본 테스트에서 Doe.lastName을 정수 또는 다른 개체로 변경하면됩니다. 기회가 있습니다, 그것은 다른 끝에서 null을 오지 않을 것입니다. 여전히 null 인 경우 ActionScript 및 Java 클래스 (John & Doe)가 제대로 일치하지 않거나 너무 모호합니다.

기본 사항은 다음과 같습니다. 데이터를 수신 할 때 일이 null이되면 직렬화에 문제가 있음을 의미합니다. BlazeDS는 네트워크에 기록 된 내용을 읽는 방법을 파악할 수 없습니다. 따라서 필드, 속성 및 공용 getter/setter를 조정하거나 객체를 직렬화하는 고유 한 메서드를 작성하십시오.

이 페이지는 훌륭한 세부 사항에 (그리고 또한 자신에 그것을 처리하는 방법) BlazeDS에 직렬화 설명 : 나는 이것을 완전히 이해하면

http://livedocs.adobe.com/blazeds/1/blazeds_devguide/help.html?content=serialize_data_2.html

, 나는 이러한 종류의 훨씬 적은 오류를했다.도움이

희망,

-kg

관련 문제