2013-01-22 39 views
2

在我的GWTQuery項目中,我遇到了一個有4個自定義下拉菜單的情況。無論用戶何時更改當前菜單選項,都會使用4個菜單的值(其中一個是該菜單新更改的值)進行AJAX請求。由於所有4個菜單都觸發了類似的請求,我雖然會寫一個公共類來處理AJAX請求,然後讓點擊處理程序擴展該類。在GWTQuery中爲點擊元素定義通用處理程序

但是,然後,菜單是動態生成的,我不得不求助於GWTQuery的live方法。這需要一個類型爲Function的變量作爲參數。既然它已經擴展了Function,我也不能使它擴展我的Ajax處理類。那我該怎麼做呢?像這樣的東西是什麼,我在尋找:

class f extends Funnction, AJAX_Handler { 
public boolean f(Event e) { 
    ... 
    return true; 
    } 
public void request(int i1,int i2,int i3,int i4) { 
    //for handling the request, defined in the AJAX_Handler class 
    ... 
    } 
} 

一件事,定義了其中包含AJAX_handler功能的全部4個菜單的通用處理器,然後檢測其菜單是當前處理器指的是一個沒有沒有。 AJAX_handler類必須是單獨的。

回答

1

改爲定義接口。

public interface AJAX_Handler 
{ 
    public void request(int i1,int i2,int i3,int i4); 

} 

然後在你的實際類中實現已定義的接口。

class f extends Funnction implements AJAX_Handler 
{ 
    public boolean f(Event e) { 
     ... 
    return true; 
    } 
    public void request(int i1,int i2,int i3,int i4) { 
    //for handling the request, defined in the AJAX_Handler class 
    ... 
    } 
    } 

[編輯] 既然你需要保持的功能在同一個地方。我認爲最簡單的解決方法是定義AJAX_Handler接口,然後實現一個類。例如:

public class AJAX_HandlerImpl implements AJAX_Handler 
{ 
    public void request(int i1,int i2,int i3,int i4){ 
     //do whats necessary 
    } 
} 

然後在你的f類中使用組合。例如:

class f extends Funnction implements AJAX_Handler 
{ 
    private AJAX_HandlerImpl impl = new AJAX_HandlerImpl(); 

    public boolean f(Event e) { 
     ... 
    return true; 
    } 

    public void request(int i1,int i2,int i3,int i4) { 
      impl.request(i1,i2,i3,i4); 
    } 
    } 
+0

'request'函數的定義非常大且複雜。所以如果我將它聲明爲一個接口,我將不得不爲所有4個處理程序完全實現,正是我試圖避免的。 – SexyBeast

+0

檢查編輯。 – Sednus

+0

這將工作與GWTQuery的「活」? – SexyBeast

相關問題