[Seasar-user:4915] [S2Axis2] 引数にDTOの入れ子を渡す場合の制限

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2006年 10月 25日 (水) 16:28:57 JST


関です、お世話になっております。

■問題
S2Axisにて、サーバーメソッドの引数のDTOの中にDTOの配列がある場合に
サーバー側で受け取ったDTOではDTO配列が1個に減り、そのDTO配列のプロパティがnullになっています。

何か書き方が間違っているのでしょうか?
Dtoの入れ子は頻繁に使うことを想定しているので困っています。
よろしくお願いします。

■現象
☆BeanEchoImpl.java
以下の echoDto の場所にブレークポイントを設定し
DataList プロパティを確認するとnullになっている。

    public EchoDto echo(EchoDto echoDto) {
        return echoDto;
    }

■環境
https://www.seasar.org/svn/s2axis/trunk/s2axis2-examples
レポジトリをチェックアウトした後に、下記の変更を行う。
その後、BeanEchoTest.javaを実行し、サーバー側の
BeanEchoImpl.javaのechoDtoの値を確認した。

■変更箇所
☆EchoDto.java
下記を追加

    private DataDto[]	dataList = new DataDto[0];

    public DataDto[] getDataList() {
		return dataList;
	}

	public void setDataList(DataDto[] dataList) {
		this.dataList = dataList;
	}


☆DataDto.java
以下の内容のクラスを新規に作成

	package org.seasar.remoting.axis2.examples.ex03;

	public class DataDto {

		private String name;

		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}
	}


☆BeanEchoTest.java
testメソッドを以下の用に更新

    public void test() {
        EchoDto expected = new EchoDto();
        expected.setStrParam("echo");

        DataDto[] dataDto = {new DataDto(),new DataDto(),new DataDto()};
        dataDto[0].setName("a");
        dataDto[1].setName("b");
        dataDto[2].setName("c");
        expected.setDataList(dataDto);

        BeanEcho beanEcho = (BeanEcho) getComponent(BeanEcho.class);
        EchoDto actual = beanEcho.echo(expected);

        assertEquals(expected.getStrParam(), actual.getStrParam());
    }





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