我是一个Grails noob并遇到了似乎是一个bug的东西,但完全有可能我没有正确配置所有东西.
我有两个简单的域类:
class Player {
String firstName
String lastName
static constraints = {
firstName(blank:false)
lastName(blank:false)
}
String toString() { lastName + ", " + firstName }
}
Run Code Online (Sandbox Code Playgroud)
和
class Team {
String mascot;
static hasMany = [players:Player]
static constraints = {
mascot(blank:false)
}
}
Run Code Online (Sandbox Code Playgroud)
我有控制器,除了动态脚手架这两个域类之外什么都不做.
但是即使我在我的数据库中有一个玩家列表,在创建新团队时我也没有为他们提供多选框.
但是,当我去编辑团队时,会显示多项选择
这是新项目的动态脚手架中的错误,我是否误解了它应该如何工作,或者我需要在这里声明一些其他内容吗?
任何帮助都非常感谢!我有截图,StackOverflow不会因为我的新意而让我添加,但如果有帮助的话,我很乐意向他们展示另一种方式.
是的,默认的脚手架将父选择器放在子类的创建/编辑页面中。
我猜这样对他们来说更容易。但它不应该是多选,而只是下拉单选,因为它是一对多。
正如您所解释的,您想要更多的多对多关系,您可以尝试添加:
static hasMany = [teams:Team]
Run Code Online (Sandbox Code Playgroud)
到你的 Player 类。我发现 Grails 在双向关系方面做得更好。在构建搜索查询时它也很有用,并且不需要超过您已经需要的一个关系表。
如果您使用的是 v1.1 之前的 Grails,则不直接支持多对多关系,因此即使添加上面的静态 hasMany 也不是完整的解决方案,因为您需要管理添加到另一个添加到一个方向时列出。我还没有使用过v1.1,所以无法谈论其中指定Many-to-Many需要什么。
| 归档时间: |
|
| 查看次数: |
7378 次 |
| 最近记录: |