2013-01-23 9 views
13

Iam nowy w JSF.Co to jest różnica między setPropertyActionListener vs atrybut vs param? ? Kiedy byłoby użyć setPropertyActionListener .Dzięki AdvanceJSF Core Tag: setPropertyActionListener vs atrybut vs param

+3

Powiązane: http://balusc.blogspot.com/2006/06/communication-in-jsf.html Zauważ, że od EL 2.2 możesz przekazywać argumenty bezpośrednio do metod akcji bez potrzeby stosowania żadnego z tych tagów. – BalusC

Odpowiedz

28

1. f: setPropertyActionListener:

Z tego znacznika można bezpośrednio ustawić właściwość w ty kopii Bean. Przykład:

xhtml:

<h:commandButton action="page.xhtml" value="OK"> 
    <f:setPropertyActionListener target="#{myBean.name}" value="myname"/> 
</h:commandButton> 

kopii Bean

@ManagedBean 
@SessionScoped 
public class MyBean{ 

    public String name; 

    public void setName(String name) { 
     this.name= name; 
    } 

} 

Spowoduje to ustawienie name właściwości podkładu Bean wartość myname.

2. F: parametr:

Ten znacznik proste ustawia parametr żądania. Przykład:

xhtml:

<h:commandButton action="page.xhtml"> 
    <f:param name="myparam" value="myvalue" /> 
</h:commandButton> 

więc można dostać ten parametr w podkładowej Fasola:

FacesContext.getExternalContext().getRequestParameterMap().get("myparam") 

3. f: atrybut:

Z tego znacznika można przekazać atrybut, abyś mógł pobrać ten atrybut z metody detektora działania dla twojego komponentu bean.

xhtml:

<h:commandButton action="page.xhtml" actionListener="#{myBean.doSomething}"> 
    <f:attribute name="myattribute" value="myvalue" /> 
</h:commandButton> 

dzięki czemu można uzyskać ten atrybut z metody działania detektora:

public void doSomething(ActionEvent event){ 
    String myattr = (String)event.getComponent().getAttributes().get("myattribute"); 
} 

należy użyć f:setPropertyActionListener gdy chcesz ustawić właściwość fasoli podkładowej. Jeśli chcesz przekazać parametr do komponentu bean pomocniczej, rozważ f:param i f:attribute. Ponadto ważne jest, aby wiedzieć, że z f:param można po prostu przekazać wartości String, a przy f:attribute można przekazywać obiekty.

Powiązane problemy