4 façons de passer un paramètre de la page JSF au bean de sauvegarde

4 façons de passer un paramètre de la page JSF au bean de sauvegarde

Comme je sais, il y a 4 façons de passer une valeur de paramètre de la page JSF au bean de sauvegarde:

  1. Expression de méthode (JSF 2.0)

  2. f: param

  3. f: attribut

  4. f: setPropertyActionListener

Voyons l'exemple un par un:

1. Expression de méthode

Depuis JSF 2.0, vous êtes autorisé à passer la valeur du paramètre dans l'expression de méthode comme ceci#\{bean.method(param)}.

Page JSF…

Haricot de soutien…

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

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

}

Note
Si vous déployez une application JSF dans un conteneur de servlet comme Tomcat, assurez-vous d'inclure correctement les «el-impl-2.2.jar». Pour plus de détails, veuillez lire cet article -JSF 2.0 method expression caused error in Tomcat.

2. f: param

Passez la valeur du paramètre via la balisef:param et récupérez-la via le paramètre de requête dans le bean de sauvegarde.

Page JSF…


    

Haricot de soutien…

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

    public String editAction() {

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

    }

}

Voir unf:param example complet ici.

3. f: attribuer

Passez la valeur du paramètre via la balisef:atribute et récupérez-la via l'écouteur d'action dans le bean de sauvegarde.

Page JSF…


    

Haricot de soutien…

@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() {
    //...
  }

}

Voir unf:attribute example complet ici.

4. f: setPropertyActionListener

Passez la valeur du paramètre via la balisef:setPropertyActionListener, cela définira la valeur directement dans votre propriété de bean de support.

Page JSF…


    

Haricot de soutien…

@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"
    }

}

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