利用できるアノテーション
S2Flex2で利用できるアノテーションは以下の通りです。
アノテーション |
説明 |
---|---|
RemotingService |
Flex2から呼び出すサービス用アノテーション |
Export |
データ保存用のアノテーション。Storageで指定したObject(session,request)にデータを保存するアノテーション |
Import |
データ取得用のアノテーション。Storageで指定したObject(session,request)からデータを取り出してComponentにセットするときに使用するアノテーション |
※アノテーションを利用するには、S2Flex2-tigerをクラスパスに含める必要があります。
以下使用例です。
package examples.flex2.add.service.impl;
import java.util.Date;
import org.seasar.flex2.rpc.remoting.service.annotation.RemotingService; import org.seasar.flex2.util.data.storage.StorageType; import org.seasar.flex2.util.data.transfer.annotation.Export; import org.seasar.flex2.util.data.transfer.annotation.Import; import examples.flex2.add.dto.AddDto; import examples.flex2.add.service.AddService; //このRemotingServiceを指定してFlex2クライアントから呼び出せるようにします。 @RemotingService public class AddServiceImpl implements AddService { private AddDto addDto; public int calculate(int arg1, int arg2) { return arg1 + arg2; } //Sessionに現在のデータをセットするとき //AddDtoは、Sessionに書かれます。 @Export(storage = StorageType.SESSION) public AddDto getAddDto() { return addDto; } //Sessionに登録されているデータをBeanのプロパティにセットするとき //AddDtoはSessionより取得したものがComponentsにセットされます。 @Import(storage = StorageType.SESSION) public void setAddDto(AddDto addDto) { this.addDto = addDto; } }
ログインした情報を保持するようなケース
以下はログインした際に、Sessionにログインした情報をセットし、ほかのサービスでそのログイン情報を利用するようなケースの使用例です。
LoginServiceで、ログインした情報を保持しておき、ProductsSevriceでは、そのログイン情報をもとに処理を切り替えます。
1.Sessionにログイン情報を保持する
まず最初にLoginServiceにExportアノテーションを記述します。ログインした情報は、Sessionに保持されるようになります。s
public Class LoginServiceImpl implements LoginService { //ログイン結果はSessionに保存します。 //getMethodに@Exportがあると、SessionにComponentsを保存します。 @Export(storage=StorageType.SESSION) public LoginInfo getLoginInfo(){ return loginInfo; } private LoginInfo loginInfo; public LoginInfo doLogin(String id,String pass){ : : loginInfo = new LoginInfo(); loginInfo.name="Hoge"; } }
2.Sessionに保持した情報を利用する
LoginServiceで保持したLogin情報(LoginInfo)をサービス内で利用して処理を切り分けています。
public Class ProductServiceImpl implements ProductsService { private LoginInfo loginInfo; //SessionよりLoginInfoを取得してセットする。 @Import(storage=storageType.SESSION) public void setLoginInfo(LoginDto loginInfo){ this.loginInfo=loginInfo; } public List<Products> getProducts(){ //Sessionにあるログイン情報をもとに処理判定をします。 if(loginInfo.name.equals("Hoge")){ return new List<Products>(); }else{ return null; } } }
JDK1.4で利用するには。
JDK1.4でS2Flex2を利用するときには、定数アノテーションを利用して指定することができます。定数アノテーションとして、用意しているのは以下のとおりです。
アノテーション |
説明 |
---|---|
REMOTING_SERVICE |
Flex2から呼び出すサービスを示す定数アノテーション。 |
$変数名_EXPORT |
sessionにデータを保存するときに利用する定数アノテーション。 |
$変数名_IMPORT |
sessionからデータを取得するときに利用する定数アノテーション。 |
storageには、org.seasar.flex2.util.data.storage.StorageTypeで定義されているものを利用します。
現在の所以下の2つを用意しています。
- org.seasar.flex2.util.data.storage.StorageType.SESSION
- org.seasar.flex2.util.data.storage.StorageType.REQUEST
現状ではStorageType.SESSIONを使うのが効果的です。
使用例
//For JDK1.4 Field Annotations.
//値は特に問いませんが、service名称をそのまま指定しておきます。
public static final String REMOTING_SERVICE = "testRemotingService";
//sessionにデータを保存するとき
public static final String strData_EXPORT = StorageType.SESSION;
//sessionから取得したデータをセットするとき
public static final String strData_IMPORT = StorageType.SESSION;
//sessionデータバインディング対象プロパティ
private String strData;