【问题标题】:List when sent to Controller from GSP is a String?从 GSP 发送到控制器时的列表是字符串吗?
【发布时间】:2014-08-11 01:39:53
【问题描述】:

我有一个在客户端使用 Javascript 构建的字符串列表,在 Javascript 控制台中如下所示:

["No address provided.", "No telephone number provided."]

我在 ajax 调用中将此作为 GSP 的参数之一发送到我的控制器,但控制器看到它是这样的:

No address provided.,No telephone number provided.

即作为字符串(不带方括号)。这就是我发送参数的方式:

<button id="save" onclick = "${remoteFunction(controller: 'customer', 
                                                action: 'saveModifiedIndividualRecord',
                                                params: '\'uniqueId=\' + uniqueId + \'&secondaryId=\' + secondaryId + \'&redIssuesRemoved=\' + removedRedIssues + \'&yellowIssuesRemoved=\' + removedYellowIssues')}"> Save </button>

有什么方法可以让 Controller 将其视为 List 而不是 String?

【问题讨论】:

  • 您为其提供示例输出的参数的名称是什么(我假设它是 redIssuesRemoved 或 yellowIssuesRemoved 或两者都...)。
  • 您可以尝试使用 join: ... + \'&amp;redIssuesRemoved=\' + join(removedRedIssues, '&amp;redIssuesRemoved=') + ... 以便将数组发送到控制器,如下所示:saveModifiedIndividualRecord?redIssuesRemoved='No address provided.'&amp;redIssuesRemoved='No telephone number provided.'&amp;... 这是通过以下方式发送数组值的常用方法获取。

标签: javascript grails


【解决方案1】:

在你的控制器中试试这个:

def redIssuesRemoved = params.redIssuesRemoved.tokenize(",")
def yellowIssuesRemoved = params.yellowIssuesRemoved.tokenize(",")

【讨论】:

  • 请记住,如果您的 JS 数组(字符串)值之一中有内部逗号,这将中断。
【解决方案2】:

我猜测红色或黄色问题是您的字符串参数列表。 所以试试 def listOfRedIssue = params.list('redIssuesRemoved') .. 这使它成为 List 或 yellowIssues

【讨论】:

  • 这可行,但将这两个问题都作为列表中的一个字符串,如下所示:[未提供地址。,未提供电话号码。]。但这些应该是列表中的两个单独的字符串。
  • 您需要先将 2 个问题作为列表发送 - 您当前将它们作为单个字符串发送!要通过 HTTP GET 发送数组,您需要确保指定了 2 个参数实例:每个数组实例一个(请参阅我对 Q 的评论)。那么这个答案就可以了。
猜你喜欢
  • 2016-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-06
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
  • 2019-03-18
相关资源
最近更新 更多