grails - Grails动态 “inList”

标签 grails grails3

这几乎与这个古老的问题相同:Dynamic define the inList constraint using database query基本上没有得到解决,自提出该问题以来,也许几年来有所进步。

我想用来自另一个域的值填充域属性的inList参数。由于自动生成的 View (脚手架,滤镜),这需要来自inList而不是自定义验证器。

class MyDomain {
  String someValue
  static constraints = {
    someValue(nullable: true, maxSize: 50, inList: SomeOtherDomain.list()*.name)
  }
}

这在启动时给出以下错误:
Caused by: java.lang.IllegalStateException: Either class [thepackage.SomeOtherDomain] is not a domain class or GORM has not been initialized correctly or has already been shutdown. Ensure GORM is loaded and configured correctly before calling any methods on a GORM entity.
我知道,处理此问题的“正确”方法是使someValue成为SomeOtherDomain的实例,而不是仅仅存储名称,但这并不完全适合。我们希望能够删除SomeOtherDomain实例而不破坏拥有域的保存值...具有删除值的域将继续无效,并且必须在保存之前进行更新,但已归档/锁定的记录将仍然存在并可以显示。

最佳答案

您可以像这样为filterpane指定值列表:

<filterpane:filterPane domain="MyObject" filterPropertyValues="${['someValue':[values: SomeOtherDomain.list().collect{it.name}]]}" />

然后,只需使用自定义验证程序即可进行实际验证。我不确定哪种脚手架可以使用inList,但是如果可以,可以用静态页面替换一些脚手架页面,这样很容易解决。

关于grails - Grails动态 “inList”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49557267/

相关文章:

jquery - jQuery密码强度插件:检索密码的强度

grails - Groovy Grails - 按键从 Map 中检索值的问题

grails - grails 中的 Twitter Bootstrap 事件导航栏

java - 如何在 Grails 中使用组合键访问行?

grails - 在Grails 3.2.6中,异步 Controller 操作将失去对SecurityContextHolder的访问权限

spring - grails +单例服务,用于将对象保存到数据库以供云应用程序

grails - Grails灯具插件如何从嵌入式插件加载灯具?

json - 如何在不定义内部模板的情况下使用Grails JSON View ?

grails - 无法在Heroku上部署我的Grails 3应用

grails - grails无法在带有NTLM代理的Windows上工作