Tapestryにて、セッションオブジェクト(Stateというらしいです。)を定義するには、
HiveMind側の設定が必要になります。Tapestry3の時は、Visitと呼んでいたみたいです。
やり方は、普通にセッションオブジェクトをまず作成します。
public class MySessionObject{ private Integer id; private String name; // // Getter/Setterは省略 // }
その後、HiveMindの設定ファイル(WEB-INF/hivemodule.xml)を作成します。
<?xml version="1.0" encoding="Windows-31J"?> <module id="myModule" version="1.0.0"> <contribution configuration-id="tapestry.state.ApplicationObjects"> <state-object name="mySessionObject" scope="session"> <create-instance class="gsf.samples.tapestry.session.MySessionObject"/> </state-object> <!-- 以下に同じ要領で複数のState定義ができる. --> </contribution> </module>
利用する場合は、ページクラスにて、
@InjectState("mySessionObject") public abstract MySessionObject getMySessionObject(); public abstract void setMySessionObject(MySessionObject state);
としておけば、取得できるようになります。
追記:HiveMindとの連携がTapestry4のひとつの目玉みたいなのですが、
なかなかHiveMindが難しい・・・・w