マイページで掲示板やブログなどにある部署やカテゴリーの絞込みなどはログアウトしても保持されるようになっています。 これは部署などの選択を変更するたびに各ポートレットの絞込みの設定をpsmlに保存して、その値をtop画面を開く際に読み込んでいるからです。
psmlの保存は各ポートレットのScreenの doOutputメソッドでpassPSMLを用います。
ParameterParser parser = rundata.getParameters(); ALEipUtils.passPSML(rundata, context, "p12f-filters", parser .getString(ALEipConstants.LIST_FILTER)); ALEipUtils.passPSML(rundata, context, "p12g-filtertypes", parser .getString(ALEipConstants.LIST_FILTER_TYPE));
top画面で部署などを変更すると、doOutput内の上記の箇所で変更したfilterとfiltertypeの値をPSMLに保存しています。
top画面を開いた際に、保存された値をPSMLから読み込んで、セッションにで保存するには以下のメソッドを用います。
public void setFiltersFromPSML(VelocityPortlet portlet, Context context, RunData rundata) { ALEipUtils.setTemp(rundata, context, LIST_FILTER_STR, portlet .getPortletConfig() .getInitParameter("p12f-filters")); ALEipUtils.setTemp(rundata, context, LIST_FILTER_TYPE_STR, portlet .getPortletConfig() .getInitParameter("p12g-filtertypes")); }
各ポートレットのActionのbuildNormalContext内でlistData.doViewListの前に、listData.setFiltersFromPSML(portlet, context, rundata)を行うことで、部署やカテゴリーなどの選択が前回ログアウトしたときに表示していたものと一緒になります。