0

我正在尝试将地图从 gsp 发送到控制器,但地图被视为控制器中的字符串

<g:remoteFunction 
action="updateCart" 
params="{startDate:stDt,endDate:endDt,cartId:pkid,shoppingCart:'${shoppingCart}'}" 
update="resourcesSelectedId"/>

这里的 shoppingCart 是我要发送的 grails 地图变量

编辑:

我在上面发布的代码中有一个错字。参数中缺少开始“{”

params="{startDate:stDt,endDate:endDt,cartId:pkid,shoppingCart:'${shoppingCart}'}" 

根据我下面的评论更新了我的问题

在我的例子中, shoppingCart 是一个对象,它有,例如,每个项目的项目和数量。我有一些规则要根据选择的项目和数量应用,并确定每个项目的价格并将其显示给用户。我想做这个处理控制器。每当用户更新购物车时,我都需要重新计算并将其显示给用户。有没有其他更好的方法你会建议这样做而不是来回传递对象

4

2 回答 2

1

无论何时使用 params 属性,它都必须采用 Map 的格式,这意味着包括[ ]. 这也意味着您可以${ }从任何值中排除 ,因为 grails 会将所有这些都解析为潜在变量。

<g:remoteFunction 
action="updateCart" 
params="[startDate:stDt,endDate:endDt,cartId:pkid,shoppingCart:shoppingCart]" 
update="resourcesSelectedId"/>

但是,请记住,您不能发送对象。我不确定shoppingCart您的示例中有什么,但它只能是一个可以表示为字符串的简单值。也许你会想要shoppingCart.id?否则,这应该会让你朝着正确的方向前进。

于 2013-09-14T23:16:49.750 回答
0

我可以通过以下步骤来克服这个问题

  1. 将购物车对象转换为 json 字符串
  2. 将 json 作为参数的一部分传递
  3. 解析 json 字符串 server-side & process
  4. 将更新的对象传回 gsp
于 2013-09-16T06:47:35.767 回答