为 GWTQuery 中的单击元素定义通用处理程序



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

但是,菜单是动态生成的,我不得不求助于GWTQuery的live方法。这将一个类型为 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类必须是单独的类。

改为定义接口。

 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);
    }
  }

最新更新