如何将映射从gsp传递给控制器​​作为Grails remoteFunction中params的一部分

时间:2013-09-14 22:23:44

标签: grails

我正在尝试将地图从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是一个对象,例如,它包含每个项目的项目和数量。我根据所选项目和数量应用了一些规则,并确定每个项目的价格并将其显示给用户。我想这样处理控制器。每当用户更新购物车时,我需要重新计算并将其显示给用户。有没有其他更好的方法,你建议这样做而不是来回传递对象

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

我可以通过以下步骤来解决这个问题

  1. 将shoppingcart对象转换为json string
  2. 将json作为params的一部分传递
  3. 解析json字符串服务器端&amp;过程
  4. 将更新的对象传递回gsp