[Seasar-user:8838] Re: [S2Flex2]ActionScript3->Javaの変換について

jun funakura [E-MAIL ADDRESS DELETED]
2007年 7月 1日 (日) 12:14:50 JST


石井さん

ふなくら(nod)です。
回答がおそくなってしまいました。

> RemoteObject(Java)側
>     int sum(long[] data);

上記を
int sum(Integer[] data);
にすることは可能です。
AS側でデータを渡す際に、var data:Array = [1,2,3,4,5]としているので
Integerの配列にバインディングされます。

> RemoteObject側のlong[]の部分をObject[]に変えるとうまくいきました。
> 他の型の配列だと、うまくいかないのでしょうか?

asで作成されたObjectを渡す際には、メタタグであるremoteClass
を指定することで、対応するjavaクラスの配列になります。

[RemoteClass(alias="examples.flex2.add.dto.AddDto")]

上記の例では、AddDto.javaにマッピングされるといった感じです。

 as:
var data:Array = new Array();
data[0] = new AddDto();
data[1]= new AddDto();


java
 int sum(AddDto[] data);

というようになります。

as3->javaの変換ルールは以下のルールになっています。
http://s2flex2.sandbox.seasar.org/ja/as3Tojavamapping.html

--
ふなくら(nod)



07/06/28 に 石井 博之<[E-MAIL ADDRESS DELETED]> さんは書きました:
> お世話になります。石井です。
>
> S2Flex2について質問があります。
> バージョンはS2Flex2 1.0.1を使用しています。
>
> ActionScriptからRemoteObjectのメソッドを呼び出すとき、
> 引数で配列を渡そうと思っているのですが、
> 下記のような場合、うまくいきません。
>
>
> ActionScript側 (s2flex2-tutorialのAbstractPage.asのremoteCallを使用)
>     var data:Array = [1,2,3,4,5];
>     remoteCall(service.sum(data), success, fault);
>
> RemoteObject(Java)側
>     int sum(long[] data);
>
> この場合、下記のようなエラーが表示されます。
>
> java.lang.ArrayStoreException
>  at java.lang.System.arraycopy(Native Method)
>  at
> org.seasar.flex2.util.converter.impl.AbstractArrayConverterImpl.convertToTypedArray(AbstractArrayConverterImpl.java:57)
>  at
> org.seasar.flex2.util.converter.impl.AbstractArrayConverterImpl.convertToArray(AbstractArrayConverterImpl.java:35)
>
> RemoteObject側のlong[]の部分をObject[]に変えるとうまくいきました。
> 他の型の配列だと、うまくいかないのでしょうか?
>
> よろしくお願いします。
>
> 石井
>
>
>
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>



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