我收到此警告:

Warning |The [addPeople] action accepts a parameter of type [org.codehaus.groovy.grails.web.json.JSONObject] which has not been marked with @Validateable.  Data binding will still be applied to this command object but the instance will not be validateable.

   def addPeople(JSONObject jsonsito) {

如果我将JSONObject更改为def,则警告消失。我确定引用是JSONObject。我这样做是为了避免将来出现PermGem错误。

任何人都可以解释如何用@Validateable标记此OBJ?

提前致谢。

最佳答案



你不能JSONObject类不是代码的一部分,因此您不必使其成为@Validateable

当 Controller Action 在编译时接受参数时,Grails会为您生成一堆代码。总而言之,生成的代码执行以下操作:

  • 创建该类的实例,该实例的参数是
  • 的实例
  • 对实例进行数据绑定(bind)
  • 对实例进行依赖项注入(inject)
  • 如果实例是@Validateable,则调用.validate()
  • 然后,您在该方法中的代码最终被执行

  • 步骤4是有条件的,只有在对象是@Validateable时才会发生。在您的情况下则不会,这很好。警告只是让您知道。

    附带说明一下,如果参数类型是域类String,8个基本类型之一或8个类型包装器之一,则上述过程是不同的。我上面描述的是系统对所有其他类型的行为。

    08-28 09:17