2012-10-08 1 views
1

Java (서버)에서 Flex (클라이언트)로 데이터 (데이터 직렬화)를 전달하는 동안 객체 이름이 변경됩니다. 아래에서 자세한 내용을 찾아보십시오.Flex Remoting - 데이터 직렬화 중 객체 이름 변경

자바 뽀조

public class MSC 
{ 
    public String Column1; 
    public String Column2; 
} 

자바 원격 클래스

public List<MSC> getData() 
{ 
    MSC pojoMSC = new MSC; 
    pojoMSC.Column1 = "1"; 
    pojoMSC.Column2 = "2"; 

    List<MSC> listMSC = new ArrayList<MSC>; 
    listMSC.add(pojoMSC); 
    return listMSC; 
} 

var ReturnData:ArrayColelction = event.result as ArrayCollection; 

내가 디버깅 및 표현을위한 시계 나는

ReturnData 
    [0] 
    column1 "1" 
    column2 "2" 
에 따라 얻을 ReturnData 플렉스 결과 처리기

프로세스가 모두 올 바르고 값도 모두 올 바르지만 ReturnData의 인덱스가 0 인 개체의 이름이 Column1에서 Column1로, Column2에서 Column2로 변경됩니다.

Flex AMF Data Serilization을 사용하여이 작업을 수행했다고 생각합니다. 어떻게하면 Coulmn1을 Column1 등으로 만들 수 있는지 막을 수 있습니다.

미리 감사드립니다.

답변

2

예, BlazeDS는 Java Bean 명명 규칙을 사용하기 때문입니다.

우선 자바에서는 대문자로 시작하는 클래스의 멤버 (필드, 메서드)의 이름을 지정하지 않습니다.

둘째, 캡슐화 원칙을 따르고 필드를 비공개로 설정하고 getters/setter를 사용하여 변형시키는 것이 좋습니다.

당신이 경우이 다음과 같이 될 것이다 :

public class MSC 
{ 
    private String column1; 
    private String column2; 

    public String getColumn1(){ 
     return column1; 
    } 

    public void setColumn1(String value) { 
     column1 = value; 
    } 

    public String getColumn2(){ 
     return column2; 
    } 

    public void setColumn2(String value) { 
     column2 = value; 
    } 
} 

그러나 일반적으로

가 : 대문자로 변수를 시작하지 마십시오.

+0

"BlazeDS는 Java Bean 명명 규칙을 사용합니다"라고 도와 주시겠습니까? – SRCM

+0

첫 번째 질문 : 대문자에서 시작하는 필드 이름을 갖는 것이 얼마나 중요합니까? Flex/ActionScript 코딩 규칙이 있으므로 (http://sourceforge.net/adobe/flexsdk/wiki/Coding%20Conventions/) 대문자로 시작하는 변수 및 필드의 이름 지정을 허용하지 않습니다. –

+0

그게 그렇게 중요하지는 않지만 CodingConvention에 따라 변경해야합니다. 신속한 답변을 주셔서 감사합니다, 설명서를 참조합니다. – SRCM

관련 문제