[akabana-user:93] DTOのフィールド値が空になる

Junji Furuya j-furuya @ solty.co.jp
2007年 2月 9日 (金) 13:01:20 JST


古谷といいます。
よろしくお願いいたします。

s2Flex2を使わせて頂いていますが、
<S2Flex2Service>タグで呼び出したJava側オブジェクトで、
DTOを戻り値に使用した場合、
DTOのフィールドに格納された値が空になってしまう現象が起こっています。

起こるのは、フィールド名の先頭の単語(?)が一文字の場合のようです。
例えば、
aTestCode
のような場合です。

aaTestCode
testACode
testAaCode
などだと起こりません。

長文になり申し訳ありませんが、
下に検証に使用したコードを貼らせて頂きます。

■Java側Service(一部抜粋)
@RemotingService
public class TestServiceImpl
…
  public Map<String, Object> execute(Object input){

    Map<String, Object> resultMap = new HashMap<String, Object>();

    TestDto dto = (TestDto)input;
    System.out.println("---aTestCode---"+dto.getATestCode());
    System.out.println("---aaTestCode---"+dto.getAaTestCode());
    System.out.println("---testACode---"+dto.getTestACode());
    System.out.println("---testAaCode---"+dto.getTestAaCode());

    resultMap.put("RESULT", dto);

    return resultMap;
  }
…
}

■Serviceのイベントリスナ(一部抜粋)

  public function onResult(resultEvent:ResultEvent):void
  {
    Alert.show(TestDto(resultEvent.result["RESULT"]).aTestCode);
    Alert.show(TestDto(resultEvent.result["RESULT"]).aaTestCode);
    Alert.show(TestDto(resultEvent.result["RESULT"]).testACode);
    Alert.show(TestDto(resultEvent.result["RESULT"]).testAaCode);
  }

とした場合、
Java側サービスのprintlnでは全ての値が表示されますが、
イベントリスナのAlert.showでは、一番上の「aTestCode」のみ、
空になります。

なお、検証に使用したバージョンは、

s2-framework-2.4.8
s2-flex2-1.0.0
s2-flex2-tiger-1.0.0

となります。

現在のプロジェクトでは、
命名規約でそのような略語は使用しないこととしました。

そもそもJavaのコーディング標準からするそのような命名は…
という事象かもしれませんが、ご報告いたします。

もしその他に必要な情報等ございましたら、
ご指摘ください。

よろしくお願いいたします。




akabana-user メーリングリストの案内