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