首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Array.size()返回了错误的值(Grails)

Array.size()返回了错误的值(Grails)
EN

Stack Overflow用户
提问于 2015-10-12 14:51:20
回答 4查看 2.9K关注 0票数 2

我正在使用Grails开发一个应用程序。我想要得到数组的长度。我得到了一个错误的值。这是我的代码,

代码语言:javascript
复制
def Medias =  params.medias
println params.medias    // I got [37, 40]
println params.medias.size() // I got 7 but it should be 2

我做错了什么?

谢谢你的帮助。

EN

回答 4

Stack Overflow用户

发布于 2015-10-12 15:05:40

什么是params.medias (在哪里设置)?

如果Grials将其视为字符串,则使用size()将返回字符串的长度,而不是数组。

是否:

代码语言:javascript
复制
println params.medias.length

也返回7?

您可以使用assert关键字检查Grails认为对象是什么。

如果它确实是一个字符串,您可以尝试使用以下代码将其转换为数组:

代码语言:javascript
复制
def mediasArray = Eval.me(params.medias)

println mediasArray.size()

这样做的缺点是,如果params.medias是由最终用户提供的,或者可以在编译的代码之外被恶意修改,Eval就有可能执行不想要的代码。

如果你感兴趣(不是我的),这里有一个关于“eval的邪恶(或缺乏)”的好片段:https://javascriptweblog.wordpress.com/2010/04/19/how-evil-is-eval/

票数 1
EN

Stack Overflow用户

发布于 2015-10-12 15:01:44

我认为7是字符串长度的结果:"37,40“

似乎您的媒体变量是一个数组,而不是一个集合

尝试: params.medias.length

票数 0
EN

Stack Overflow用户

发布于 2015-10-12 15:26:28

感谢所有人。我找到了我的错误

首先,我从客户端发送了一个数组,我的params.medias返回了,所以我将它转换为string,但这是一个错误的方式。

最后,我将客户端发送的and数组作为数组,在grails中,我通过

代码语言:javascript
复制
params."medias[]"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33074874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档