如何将Javascript映射作为参数从闪电组件发送到Apex服务器控制器



我有一个 salesforce Lightning 组件,它将服务器端操作排队。对于该操作,我需要传递一个映射作为参数之一,但看起来它需要对象的内存地址。

创建映射并调用服务器端操作的客户端代码:

var action = cmp.get("c.save");
var mapToSend = new Map()
for (var key of valueMap.keys()) {
    mapToSend.set(key, valueMap.get(key))
}
action.setParams({
    "name": cmp.get("v.name"),
    "params": mapToSend
});

然后在控制器中:

 public static Boolean save(String name, Map<String, Object> params) {

JavaScript的日志显示了带有所有正确字段的漂亮Map,但Salesforce系统日志仅显示

14:55:16.0 (3172304)|VARIABLE_SCOPE_BEGIN|[41]|name|String|false|false
14:55:16.0 (3188041)|VARIABLE_ASSIGNMENT|[41]|name|"Account"
14:55:16.0 (3191758)|VARIABLE_SCOPE_BEGIN|[41]|params|Map<String,ANY>|true|false
14:55:16.0 (3204719)|VARIABLE_ASSIGNMENT|[41]|params|{}|0x30d2397a

知道为什么吗?日志中的这些|false|false|true|false是什么意思?

问题在于理解javascript数据结构。通过调用 apex 控制器并准备为

var mapToSend = {}
for (var key of valueMap.keys()) {
    mapToSend[key] = valueMap.get(key);
}
action.setParams({
    "name": cmp.get("v.name"),
    "params": mapToSend
});

最新更新