java JsArray从html5存储接收数据后无法返回长度
我必须将包含JavaScriptObjects的JavaScript数组保存到html5存储中。 这些JavaScriptObject的数量在数组中是多样化的。 当iam从存储器中读出保存的JavaScripts数组时,我想显示这些数组中包含的JavaScriptr对象。 要做到这一点,我需要这些数组的长度,但这是不可能的,因为我得到了错误“除了int之外还返回了其他内容”,但只有当我收到html存储的内容时。 如果我将对象放入数组,然后读取长度,其工作原理与示例类似:
JsArray<Person> persons = JavaScriptObject.createArray().cast();
person.push(person1);
person.push(person2);
person.length(); // <---- this works
这是我的第一个JavaScript对象
public class Person extends JavaScriptObject{
protected Person(){}
final public native void setName(String name)/*-{
this.name = name;
}-*/;
final public native String getName()/*-{
return this.name;
}-*/;
}
这就是我将对象放入JsArray并将其保存到存储器中的方式
JsArray<Person> persons = JavaScriptObject.createArray().cast();
Person person = JavaScriptObject.createObject().cast();
person.setName("FirstName");
person.setLastname("LastName");
persons.push(person);
// create more person objects 2 - 3 and adding tham into the person array
persons.push(person2);
persons.push(person3);
// now save this array into storage
if(Storage.isSupported()){
storage = Storage.getLocalStorage();
storage.setItem("1", new JSONObject(persons).toString());
}
现在我想从保存在存储器中的数组中读出person对象
JsArray<Person> persons;
if(Storage.isSupported()){
storage = Storage.getLocalStorage();
System.out.println("storage length : "+storage.getLength()); // <---- works gives 1
for(int i = 0; i < storage.getLength(); i++){
int keynr = i+1;
String key = String.valueOf(keynr);
persons = JavaScriptObject.createArray().cast();
array = JsonUtils.safeEval(storage.getItem(key)); // receiving the saved array from storage
array.get(0).getFirstName(); // works it showes the name
array.length(); // doesnt work
}
}
我收到以下错误消息:
com.google.web.bindery.event.shared.UmbrellaException: Exception caught: Exception caught: Exception caught: Something other than an int was returned from JSNI method '@com.google.gwt.core.client.JsArray::length()': JS value of type undefined, expected int
那么,为什么在接收到存储数据后无法获得阵列的长度呢? 我这样做对吗? 请帮我找到解决办法
# 1 楼答案
我改了,现在可以用了
将JsArray保存到存储中
二,。从存储器中读取该阵列