我从服务器收到了地图。
当我试图从这个地图获取值时,总是会返回null,但我确信,该地图包含这样的值:
public void updateView(Map<Long, JavaScriptObjectImpl> data) {
table.setRowData(new ArrayList<JavaScriptObjectImpl>(data.values()));
table.redraw();
if (selectedFileId != -1) {
JavaScriptObjectImpl object =data.get(selectedFileId); // null is returned
consoleLog(String.valueOf(selectedFileId)); // this line prints "11001"
consoleLog(String.valueOf(data)); // this line prints "{11001=[object Object]}"
boolean b = data.containsKey(selectedFileId);
consoleLog(String.valueOf(b)); // this line prints "false"
...
}
}
有谁知道在gwt中使用Long作为Map的关键是否可行? 或者帮我解决我的问题,
谢谢!
答案 0 :(得分:0)
是否可以在gwt中使用Long作为Map中的键?
是的,GW中没有长约束作为Map中的键。
请直接从您的代码中查看此行。
consoleLog(String.valueOf(data)); // this line prints "{11001=[object Object]}"
data
包含一个键11001
和一个not null
的值,清晰可见。
如果值为null
,则会显示类似{11001=null}
答案 1 :(得分:0)
我找出了问题的原因。
for (int i = 0; i < allFilesInfo.length(); i++) {
FileInfoJS info = allFilesInfo.get(i);
filesInfo.put(Long.parseLong(String.valueOf(info.getFileId())), info);
}
当我形成map时,info.getFileId()的值不是Long,而是JSObject。 不幸的是,我无法解释。