2

在我的 GWTQuery 项目中,我遇到了一个有 4 个自定义下拉菜单的情况。每当用户更改任何当前菜单选项时,都会使用 4 个菜单的值(其中一个是该菜单的新更改值)发出 AJAX 请求。由于所有 4 个菜单都触发了类似的请求,我认为我将编写一个通用类来处理 AJAX 请求,然后让 clickhandlers 扩展该类。

但是,菜单是动态生成的,我不得不求助于 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
  ...
  }
 }

有一件事,为所有 4 个包含 AJAX_handler 函数的菜单定义一个通用处理程序,然后检测哪个菜单是当前处理程序所指的,这是一个禁忌。AJAX_handler 类必须是一个单独的类。

4

1 回答 1

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);
    }
  }
于 2013-01-22T19:48:28.573 回答