我正在使用Grails开发应用程序。我想获得数组的长度。 我得到了错误的价值。这是我的代码,
def Medias = params.medias
println params.medias // I got [37, 40]
println params.medias.size() // I got 7 but it should be 2
我做错了什么?
感谢您的帮助。
答案 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