いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Tapestry奮闘記-0019 (セッションオブジェクトの定義)

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