我正在使用Grails开发一个应用程序。我想要得到数组的长度。我得到了一个错误的值。这是我的代码,
def Medias = params.medias
println params.medias // I got [37, 40]
println params.medias.size() // I got 7 but it should be 2我做错了什么?
谢谢你的帮助。
发布于 2015-10-12 15:05:40
什么是params.medias (在哪里设置)?
如果Grials将其视为字符串,则使用size()将返回字符串的长度,而不是数组。
是否:
println params.medias.length也返回7?
您可以使用assert关键字检查Grails认为对象是什么。
如果它确实是一个字符串,您可以尝试使用以下代码将其转换为数组:
def mediasArray = Eval.me(params.medias)
println mediasArray.size()这样做的缺点是,如果params.medias是由最终用户提供的,或者可以在编译的代码之外被恶意修改,Eval就有可能执行不想要的代码。
如果你感兴趣(不是我的),这里有一个关于“eval的邪恶(或缺乏)”的好片段:https://javascriptweblog.wordpress.com/2010/04/19/how-evil-is-eval/
发布于 2015-10-12 15:01:44
我认为7是字符串长度的结果:"37,40“
似乎您的媒体变量是一个数组,而不是一个集合
尝试: params.medias.length
发布于 2015-10-12 15:26:28
感谢所有人。我找到了我的错误
首先,我从客户端发送了一个数组,我的params.medias返回了空,所以我将它转换为string,但这是一个错误的方式。
最后,我将客户端发送的and数组作为数组,在grails中,我通过
params."medias[]"https://stackoverflow.com/questions/33074874
复制相似问题