Primefaces Commandbutton yada commandlink'e birden dazla actionlistener özelliği eklenebilir mi ?

soruldu: 24 Tem '13, 03:14

Ekici's gravatar image

Ekici
12691217
cevap kabul oranı: 25%


Evet bir <h:commandButton> 'a birden fazla actionListener tanımlanabilir.

actionListener gerçek actiondan önce çalışması istenilen methodlar olması durumunda kullanılır. Birden fazla tanımlanan actionListenerlar tanımlanma sırasına göre çalışacatır.

<p:commandButton actionListener="#{myBean.actionListener}" action="#{myBean.action}"  value="Action" >
<f:actionListener type="org.btsoru.manager.impl.ActionListener1"/>
<f:actionListener type="org.btsoru.manager.impl.ActionListener2"/>
<f:actionListener type="org.btsoru.manager.impl.ActionListener3"/>
</p:commandButton>

Yukarıdaki örnekte olduğu gibi birden fazla <f:actionListener> tanımlaması yapılabilir. ActionListenerlar iki şekilde tanımlanır.

Method Binding

Bir managed bean'in methodu <h:commandButton> actionListener özelliğine tanımlanarak yapılabilir. Yukarıdaki örnekte actionListener="#{myBean.actionListener}" şeklinde yapılmıştır.

public void actionListener(ActionEvent event) {
        System.out.println("actionListener");
    }

Method parametre olarak ActionEvent almalıdır.

ActionListener

javax.faces.event.ActionListener interfaceyi implemente edilerek yeni bir ActionListener sınıfı oluşturulur ve ActionListener#processAction implemente edilir.

public class ActionListener1 implements ActionListener {

    @Override
    public void processAction(ActionEvent arg0) throws AbortProcessingException {
        // TODO Auto-generated method stub
        System.out.println("ActionListener1");

    }
}

Yukarıdaki örnekte olduğu gibi 3 adet action listener tanımlaması yaptı ve <h:commandButton>na <f:actionListener> aracılığı ile tanımladım. Yukarıdaki örnekten anlaşılabilir.

ActionListener ve Action çağırılma sırası

Uygulamayı çalıştırdığımda aldığımız çıktı şu şekilde olur.

actionListener
ActionListener1
ActionListener2
ActionListener3
action

Yani tanımlama sırasına göre actionListenerlar öncelikli olarak çalışır ve en son action çalışır. Bir buttona birden fazla action tanımlama olanağı yoktur.

@ManagedBean
public class MyBean {

    public void actionListener(ActionEvent event) {
        System.out.println("actionListener");
    }

    public void action() {
        System.out.println("action");
    }
   }
permanent link

cevaplandı: 24 Tem '13, 05:08

erencan's gravatar image

erencan
7911812
cevap kabul oranı: 40%

değiştirildi: 24 Tem '13, 05:13

teşekkürler eren hocam.

(24 Tem '13, 05:50) Ekici Ekici's gravatar image

Rica ederim @Ekici

(24 Tem '13, 05:58) erencan erencan's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,076
×281
×97

Soruldu: 24 Tem '13, 03:14

Görüntüleme: 672 kez

Son güncelleme: 24 Tem '13, 05:58

powered by BitNami OSQA