【问题标题】:Groovy / Grails using a map as a parameter of a functionGroovy / Grails 使用映射作为函数的参数
【发布时间】:2014-10-17 02:04:30
【问题描述】:

我有一个非常简单的函数,我定义如下:

 def mySimpleFunction(Map myMap) {
   // Function logic here...
  }

但是,当我尝试编译它时,我收到一条警告消息并生成异常,其中指出:[mySimpleFunction] 操作接受类型为 [java.util.Map] 的参数,该参数未标记为 Validateable。

如何将此函数标记为 Validateable?我导入了 org.codehaus.groovy.grails.validation.Validateable

并将我的班级标记为@Validateable。

为了构建我的应用程序,我应该做些什么不同的事情?

提前谢谢你!

【问题讨论】:

  • 这个功能在哪里?控制器、服务等?
  • 将该方法标记为@Validatable。除了 grails 在控制器中所做的魔法映射/参数绑定之外,我不确定其原因。

标签: grails


【解决方案1】:

如果它是辅助方法,请将其设为私有。在 Grails 2.0+ 中,公共控制器方法被假定为动作,而参数被假定为可绑定的。这意味着它们需要是数字类型、布尔值、字符串等,或者是命令对象类。

如果在控制器类文件中定义了命令对象类,则它们会自动变为可验证的,如果它们在其他地方定义,则需要将它们注释为 @Validateable

由于这是一个辅助方法而不是一个动作,只需将其设为私有(尤其是因为它不能从另一个类调用):

private mySimpleFunction(Map myMap) {
   // Function logic here...
}

【讨论】:

  • 谢谢伯特!欣赏它。期待在您的新书上市后阅读它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-20
  • 2012-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-03
  • 2011-12-09
相关资源
最近更新 更多