クライアント側にMessageBeanクラスを作る
さて、アプリケーションサーバのMessageServiceから結果としてMessageBeanオブジェクトが返ってきたり、引数としてMessageBeanオブジェクトを与えたりする必要があります。この場合、flexではどうすれば良いのかというと、JavaのMessageBeanオブジェクトを表すActionScriptクラスを作ってあげれば良い事になります。
実装方法は単純で、JavaのクラスをそのままActionScriptで表したような形になります。
MessageBean.as
class MessageBean { var pk:Number; var titleText:String; var submitDateText:String; var child:Boolean; var content:String; var mail:String; var url:String; var subject:String; var userName:String; var userPass:String; var _remoteClass:String; function MessageBean() { _remoteClass = "bbs.data.MessageBean"; clear(); } function clear() : Void { this.titleText=""; this.submitDateText=""; this.child=false; this.mail=""; this.url=""; this.content=""; this.subject=""; this.userName=""; this.userPass=""; this.pk=-1; } }
なお、密かに以下の項目が追加されています。
- titleText
- 「■ メッセージのタイトル / ユーザ名」という形でフォーマットされた文字列
- submitDateText
- 投稿日時をフォーマットした文字列
これらはサーバー側のMessage.javaにgetterを実装しておきます。(話が前後してすみません)
追加したメソッドは以下の通りです。
Message.java(抜粋)
SimpleDateFormat formatter = new SimpleDateFormat(" yyyy.MM.dd HH:mm:ss "); public String getTitleText() { StringBuffer strbuf = new StringBuffer("■ "); strbuf.append(this.getSubject()); strbuf.append(" / "); strbuf.append(this.getUserName()); return strbuf.toString(); } public String getSubmitDateText() { return formatter.format(this.getSubmitDate()); }
MessageBean.asで重要なのは
_remoteClass
という変数です。ここの文字列がJavaBeansのクラス名になるという決まりがあるみたいです。これがわかるまで3日くらいかかりました(笑)。ドキュメントの読み方がヘタなんだな・・しかし、こうするだけでFlashRemotingがMessageBeanオブジェクトを作ってくれると言うのは大変便利です。