2013-05-28 46 views
0

是否可以註冊全局動作偵聽器,該偵聽器將偵聽在頁面上觸發的所有動作事件?
如果是這樣,那意味着我不需要在每個動作組件上註冊相同(默認)動作列表。如何在全球範圍內偵聽動作事件

+0

爲什麼不能簡單地用始終不變的'的ActionListener =「# {sameBean.sameListener}「''對於每個組件,您將能夠使用** ActionEvent **獲取發件人。我仍然不明白你爲什麼要這樣做...... –

+0

你能告訴我你到底想要做什麼嗎?只是想知道這個想法... –

+0

@AlexandreLavoie我想保持我的代碼清潔,可能我可能需要一個組件的另一個actionlistener。 –

回答

0

有兩路,你可以做到這一點:

使用actionListener參數:

<h:commandButton id="test1" value="Test 1" actionListener="#{bean.action}" /> 
<h:commandButton id="test2" value="Test 2" actionListener="#{bean.action}" /> 


public void action(ActionEvent event) 
{ 
    System.out.println(event.getComponent().getClientId()); 
} 

使用正常的參數:

<h:commandButton id="test1" value="Test 1" actionListener="#{bean.action('test1')}" /> 
<h:commandButton id="test2" value="Test 2" actionListener="#{bean.action('test1')}" /> 

public void action(String sender) 
{ 
    System.out.println(sender); 
}