假设我有以下域:
class Store {
String name
static hasMany = [ products: StoreProduct ]
}
class Product {
String name
static hasMany = [ stores: StoreProduct ]
}
class StoreProduct {
BigDecimal discount
static belongsTo = [ store: Store, product: Product ]
static mapping = {
id composite: ['store', 'product']
}
换句话说,中间域类之间存在多对多关系,Store
以跟踪每个商店的单个折扣。Product
StoreProduct
Grails 内置了对一对多关系的支持,因此您可以传入带有正确字段名称的 ID 列表,控制器会自动将 ID 解析为实体列表。但是,在这种情况下,它是具有中间域类的多对多。
我在Store
编辑视图中尝试了以下代码,以允许用户选择产品列表:
<g:each in="${products}" var="product" status="i">
<label class="checkbox">
<input type="checkbox" name="products" value="${product.id}"/>
${product.name}
</label>
</g:each>
但是 Grails 会根据我用于name
属性的内容引发各种错误。我还尝试了以下input
名称:
products
products.product
products.product.id
product[0].product
product[0].product.id
但它们都不能正常工作。
我的问题是,Grails 中是否有对这种关系的内置支持,尤其是在视图方面?