0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JSFで動的にメソッドを呼び出す

Posted at

#はじめに

画面上にあるデータの主キーをセッションに格納してから画面遷移したい。
どの画面からどの画面へ遷移するときも、必ず自画面のManagedBeanの(キーをセッションに格納する)メソッドを呼び出したかったのでそのときやった実装方法をメモ。

#環境

Eclipse4.8 Photon
JavaEE6(Java7)
JSF2.0
GlassFish 3.1.2.2
Windows10

#ui:paramタグ

sample.xhtml
<h:body>
 <ui:param name="targetView" value="#{sampleView}"/>
  <!--省略-->
</h:body>
sample.java
@ManagedBean(name = "sampleView")
public class sample{
 public void setMoveKey(ActionEvent event){
  //セッションにキーを格納
 }
}

Jsfページにui:paramタグを追加します。
valueにはManagedBeanのnameを書いておきます。
これを画面遷移時にキーをセッションに格納させたい全ての画面に追加しておきます。
※メソッド名setMoveKeyは各ManagedBeanで揃えておきます。

header.xhtml
<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が実行されるようになりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?