#はじめに
画面上にあるデータの主キーをセッションに格納してから画面遷移したい。
どの画面からどの画面へ遷移するときも、必ず自画面のManagedBeanの(キーをセッションに格納する)メソッドを呼び出したかったのでそのときやった実装方法をメモ。
#環境
Eclipse4.8 Photon
JavaEE6(Java7)
JSF2.0
GlassFish 3.1.2.2
Windows10
#ui:paramタグ
<h:body>
<ui:param name="targetView" value="#{sampleView}"/>
<!--省略-->
</h:body>
@ManagedBean(name = "sampleView")
public class sample{
public void setMoveKey(ActionEvent event){
//セッションにキーを格納
}
}
Jsfページにui:paramタグを追加します。
valueにはManagedBeanのnameを書いておきます。
これを画面遷移時にキーをセッションに格納させたい全ての画面に追加しておきます。
※メソッド名setMoveKeyは各ManagedBeanで揃えておきます。
<h:body>
<h:form>
<div>
<ui>
<li><h:commandLink value="サンプル"
actionListener="#{targetView.setMoveKey}"
action="画面遷移メソッド(省略)"/></li>
<li><h:commandLink value="サンプル2"
actionListener="#{targetView.setMoveKey}"
action="画面遷移メソッド(省略)"/></li>
<li><h:commandLink value="サンプル3"
actionListener="#{targetView.setMoveKey}"
action="画面遷移メソッド(省略)"/></li>
<!--省略-->
</h:body>
画面遷移のh:commandLinkタグにactionListener属性を追加して
"#{ui:paramのname.呼び出したいメソッド名}の形式で記述します。
これで完了です。
サンプル画面からサンプル2画面へ遷移するときは、
画面遷移メソッドが呼ばれる前にsampleView(sample.xhtmlのManagedBean)のsetMoveKeyが実行され、
サンプル2画面からサンプル画面へ遷移するときは、
sampleView2(sample2.xhtmlのManagedBean)のsetMoveKeyが実行されるようになりました。