JSFページからバッキングBeanにパラメータを渡す4つの方法

JSFページからバッキングBeanにパラメーターを渡す4つの方法

私が知っているように、JSFページからバッキングBeanにパラメータ値を渡すには4つの方法があります:

  1. メソッド式(JSF 2.0)

  2. f:パラメーター

  3. f:属性

  4. f:setPropertyActionListener

例を1つずつ見てみましょう。

1. メソッド式

JSF 2.0以降、この#\{bean.method(param)}のようにメソッド式でパラメーター値を渡すことができます。

JSFページ…

バッキングビーン…

@ManagedBean(name="user")
@SessionScoped
public class UserBean{

    public String editAction(String id) {
      //id = "delete"
    }

}

Note
JSFアプリケーションをTomcatなどのサーブレットコンテナにデプロイする場合は、「el-impl-2.2.jar」を適切に含めるようにしてください。 詳細については、この記事–JSF 2.0 method expression caused error in Tomcatをお読みください。

2. f:パラメーター

f:paramタグを介してパラメータ値を渡し、バッキングBeanのリクエストパラメータを介して取得します。

JSFページ…


    

バッキングビーン…

@ManagedBean(name="user")
@SessionScoped
public class UserBean{

    public String editAction() {

      Map params =
                FacesContext.getExternalContext().getRequestParameterMap();
      String action = params.get("action");
          //...

    }

}

ここで完全なf:param exampleを参照してください。

3. f:属性

f:atributeタグを介してパラメーター値を渡し、バッキングBeanのアクションリスナーを介してパラメーター値を取得します。

JSFページ…


    

バッキングビーン…

@ManagedBean(name="user")
@SessionScoped
public class UserBean{

  String action;

  //action listener event
  public void attrListener(ActionEvent event){

    action = (String)event.getComponent().getAttributes().get("action");

  }

  public String editAction() {
    //...
  }

}

ここで完全なf:attribute exampleを参照してください。

4. f:setPropertyActionListener

f:setPropertyActionListenerタグを介してパラメータ値を渡すと、値がバッキングBeanプロパティに直接設定されます。

JSFページ…


    

バッキングビーン…

@ManagedBean(name="user")
@SessionScoped
public class UserBean{

    public String action;

    public void setAction(String action) {
        this.action = action;
    }

    public String editAction() {
       //now action property contains "delete"
    }

}

ここで完全なf:setPropertyActionListener exampleを参照してください。

P.S Please share your idea, if you have any other ways :)