[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 メーリングリストの案内