有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从DOM中的集合中删除项,GWT


我是GWT的新手。我正在编写一个页面的代码,该页面要求一个包含两个集合的JSON对象,我使用其中一个集合来填充Flextable
这是我的JSON对象:

public class Users extends JavaScriptObject {

 protected Users() {
 }

 public final native JsArray<Link> getLinks() /*-{
    return this.links;
 }-*/;

 public final native JsArray<User> getCollection() /*-{
    return this.collection;
 }-*/; 
}

特别是,我使用第二个集合(称为collection)来填充Flextable
但我的问题是,当我从表中删除一行时,即使我使用http delete方法向服务器发送请求(并且服务器成功删除了该项),当我尝试刷新表时,GWT也不会向服务器生成GET请求,(即使它是写在代码中的)和用户对象与之前相同,删除的项目也相同
我已尝试使用以下方法从收藏中删除此项目:

public static native void remove(JsArray<?> arr, int index, int count) /*-{ 
                                                                              arr.splice(index, count);
                                                                    }-*/;
....
remove(users.getCollection(), index, users.getCollection().length());

我还尝试了另一种技巧:

 users.getCollection().set(index, null);

但在这两种情况下,我都没有得到预期的结果,当我刷新表时,我会再次找到已删除的项目
我认为我没有正确管理DOM,
你有什么建议吗?知道吗?我相信这对一个专家来说是一个简单的问题

编辑:
用户可以单击按钮刷新表中的数据,此事件的处理程序将向服务器执行请求,但此请求仅在第一次单击时发送


共 (1) 个答案

  1. # 1 楼答案

    基本上有两种选择,第一种是在服务器端将头Cache Control设置为no-cache,而如果无法在服务器端修改代码,例如在遗留应用程序的情况下,可以在请求中的参数中附加一个随机数。一个请求将有一个带有附加参数的uri,该参数是随机生成的数http:\\mydomain.com\something?random=12345。两个不同的请求将有不同的编号,在第二个请求中,第一个请求的响应(已缓存)将被忽略。这不是一个明智的做法,但它是有效的