繁体   English   中英

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

[英]How to send Javascript map as a parameter from lightning component to Apex server controller?

我有一个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
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM