grails - 迭代可能是字符串或字符串数​​组的 Groovy 对象

标签 grails groovy

使用 Grails 的场景是,如果我有一个从 HTTP 请求传入的对象,我遍历该对象并获取所有可能的对象,如下所示:

if (params.colors) {
  for (String color in params.colors) {
    println color
  }
}

如果传入了 [Ljava.lang.String(即 params.colors = ["blue","green","yellow"]),那么您的输出将符合预期:
blue
green
yellow

但是如果 params.colors = "blue",那么当然,groovy 会标记 "blue"并且你会得到输出:
b
l
u
e

我想我应该检查它是否已经是一个数组。除非我接近这个错误或者有一种时髦的方式来做到这一点。

最佳答案

您可以使用 list 以列表形式访问颜色参数。 params上的方法目的:

for (String color in params.list('colors')) {
  println color
}

这样,如果您的操作被称为 /your_action?colors=red 就没有关系了或 /your_action?colors=red&colors=green甚至根本没有颜色参数(这就是我忽略 if 的原因),params.list('colors')将始终返回一个列表:)

关于grails - 迭代可能是字符串或字符串数​​组的 Groovy 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14372122/

相关文章:

grails - 在数据库中使用默认参数,并在Grails中添加一些动态生成到数据库中的新参数

grails - 从Grails中的select标签中选择多个值

unit-testing - Gradle忽略了我的Spock单元测试之一,并没有告诉我为什么

grails - 使用Java类作为Grails命令

groovy - 如何在脚本中的多个文件中使用多个类?

jenkins - 如何修复管道脚本 "Expected a step"错误

gwt - 如何使GWT插件与Grails一起运行?

grails - 将值从Grails Controller 传递到src/groovy中的类

javascript - 检索 POST JSON 响应

groovy - 在nifi中如何使用groovy脚本调用休息服务