Java 在GWTQuery中为click元素定义公共处理程序
在我的GWTQuery项目中,有一种情况是有4个自定义下拉菜单。每当用户更改任何当前菜单选项时,都会使用4个菜单的值(其中一个是该菜单新更改的值)发出AJAX请求。由于所有4个菜单都触发了类似的请求,我想我将编写一个公共类来处理AJAX请求,然后让ClickHandler扩展该类 但是,由于菜单是动态生成的,我不得不求助于GWTQuery的Java 在GWTQuery中为click元素定义公共处理程序,java,gwt,gwtquery,Java,Gwt,Gwtquery,在我的GWTQuery项目中,有一种情况是有4个自定义下拉菜单。每当用户更改任何当前菜单选项时,都会使用4个菜单的值(其中一个是该菜单新更改的值)发出AJAX请求。由于所有4个菜单都触发了类似的请求,我想我将编写一个公共类来处理AJAX请求,然后让ClickHandler扩展该类 但是,由于菜单是动态生成的,我不得不求助于GWTQuery的live方法。它将函数类型的变量作为参数。因为它已经扩展了函数,所以我不能让它也扩展我的Ajax处理程序类。那我该怎么做呢?这就是我想要的: class f
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个处理程序完全执行它,这正是我试图避免的事情..我看不出为什么它不会。但我想你肯定会发现的。是的,那是真的。让我检查一下……不过这是个好主意,明天肯定会给你奖金……哇。工作起来很有魅力!非常感谢,伙计!明天我会赏金的,至少我能为这么大的帮助做点什么!