2013-01-23 22 views
13

JSFで新しく追加されました。setPropertyActionListenerと属性vsparamの違いは何ですか? setPropertyActionListener:?JSFコア・タグ:setPropertyActionListenerと属性vs param

+3

関連:http://balusc.blogspot.com/2006/06/communication-in-jsf.html EL 2.2以降、これらのタグを必要とせずに引数をアクションメソッドに直接渡すことができます。 – BalusC

答えて

28

1. F進める.Thanks setPropertyActionListenerを使用するだろう場合は は、このタグで

を、あなたが直接あなたがバッキングBeanにプロパティを設定することができます。例:

XHTML:

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

バッキングBeanは:

@ManagedBean 
@SessionScoped 
public class MyBean{ 

    public String name; 

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

} 

これはMYNAMEを評価するためにバッキングBeanのnameプロパティを設定します。

2. F:PARAM:

このタグの簡単なセットリクエストパラメータ。例:

XHTML:

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

3. F:属性:あなたが渡すことができます。このタグで

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

はそうあなたがバッキングBeanで、このパラメータを取得することができますこの属性はバッキングBeanのアクションリスナーメソッドから取得できます。

XHTML:

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

ので、あなたはアクションリスナーメソッドからこの属性を取得することができます:

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

あなたはバッキングBeanのプロパティを設定したいときにいつでもf:setPropertyActionListenerを使用する必要があります。パラメータをバッキングBeanに渡す場合は、f:paramf:attributeを考慮してください。また、f:paramではStringの値を渡すことができ、f:attributeではオブジェクトを渡すことができます。

関連する問題