4 Möglichkeiten, Parameter von der JSF-Seite an das Backing Bean zu übergeben

4 Möglichkeiten, Parameter von der JSF-Seite an das Backing Bean zu übergeben

Wie ich weiß, gibt es 4 Möglichkeiten, einen Parameterwert von der JSF-Seite an das Backing Bean zu übergeben:

  1. Methodenausdruck (JSF 2.0)

  2. f: param

  3. f: Attribut

  4. f: setPropertyActionListener

Sehen wir uns ein Beispiel nach dem anderen an:

1. Methodenausdruck

Seit JSF 2.0 dürfen Sie Parameterwerte im Methodenausdruck wie folgt#\{bean.method(param)} übergeben.

JSF-Seite…

Backing Bean…

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

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

}

Note
Wenn Sie eine JSF-Anwendung in einem Servlet-Container wie Tomcat bereitstellen, stellen Sie sicher, dass Sie die "el-impl-2.2.jar" ordnungsgemäß einschließen. Für Details lesen Sie bitte diesen Artikel -JSF 2.0 method expression caused error in Tomcat.

2. f: param

Übergeben Sie den Parameterwert über das Tagf:paramund erhalten Sie ihn über den Anforderungsparameter in der Backing Bean zurück.

JSF-Seite…


    

Backing Bean…

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

    public String editAction() {

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

    }

}

Sehen Sie hier vollef:param example.

3. f: atribute

Übergeben Sie den Parameterwert über das Tagf:atributeund erhalten Sie ihn über den Aktionslistener in der Backing Bean zurück.

JSF-Seite…


    

Backing Bean…

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

}

Sehen Sie hier vollef:attribute example.

4. f: setPropertyActionListener

Übergeben Sie den Parameterwert über das Tagf:setPropertyActionListener. Der Wert wird direkt in Ihre Backing-Bean-Eigenschaft festgelegt.

JSF-Seite…


    

Backing Bean…

@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 :)