Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在GWTQuery中为click元素定义公共处理程序_Java_Gwt_Gwtquery - Fatal编程技术网

Java 在GWTQuery中为click元素定义公共处理程序

Java 在GWTQuery中为click元素定义公共处理程序,java,gwt,gwtquery,Java,Gwt,Gwtquery,在我的GWTQuery项目中,有一种情况是有4个自定义下拉菜单。每当用户更改任何当前菜单选项时,都会使用4个菜单的值(其中一个是该菜单新更改的值)发出AJAX请求。由于所有4个菜单都触发了类似的请求,我想我将编写一个公共类来处理AJAX请求,然后让ClickHandler扩展该类 但是,由于菜单是动态生成的,我不得不求助于GWTQuery的live方法。它将函数类型的变量作为参数。因为它已经扩展了函数,所以我不能让它也扩展我的Ajax处理程序类。那我该怎么做呢?这就是我想要的: class f

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

但是,由于菜单是动态生成的,我不得不求助于GWTQuery的
live
方法。它将
函数类型的变量作为参数。因为它已经扩展了函数,所以我不能让它也扩展我的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\u处理程序函数的所有4个菜单定义一个通用处理程序,然后检测当前处理程序引用的菜单是一个否。AJAX\u处理程序类必须是一个单独的类。

定义接口

 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_处理程序接口,然后实现一个类。例如:

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

request
函数的定义非常大和复杂。因此,如果我将它声明为一个接口,我将不得不为所有4个处理程序完全执行它,这正是我试图避免的事情..我看不出为什么它不会。但我想你肯定会发现的。是的,那是真的。让我检查一下……不过这是个好主意,明天肯定会给你奖金……哇。工作起来很有魅力!非常感谢,伙计!明天我会赏金的,至少我能为这么大的帮助做点什么!