利用できるアノテーション
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;
