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

时间:2015-10-12 06:51:20

标签: grails groovy

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

def Medias =  params.medias
println params.medias    // I got [37, 40]
println params.medias.size() // I got 7 but it should be 2

我做错了什么?

感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

什么是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/

答案 1 :(得分:0)

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

看起来你的媒体变量是一个数组而不是一个集合

尝试:params.medias.length

答案 2 :(得分:0)

感谢大家。我发现了我的错误

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

最后,我发送了来自客户端的数组作为数组和grails,我得到了一个参数

params."medias[]"

答案 3 :(得分:0)

列出medias = params.list('medias')

文档:http://grails.github.io/grails-doc/latest/guide/single.html#typeConverters

相关问题