如何使用Grails在数据库中保存类别和相关子类别
我有一个查询页面,在创建新查询时,此页面可以选择类别和子类别。例如:如何使用Grails在数据库中保存类别和相关子类别,grails,map,gorm,Grails,Map,Gorm,我有一个查询页面,在创建新查询时,此页面可以选择类别和子类别。例如: Main Category Sub Category Sub Category Sub Category Main Category Sub Category Sub Category Sub Category Main Category Sub Category Sub Category Sub Category 用户可以从查询页面选择多个类别和子类别 以下是与类别和子类别相关的领域分类: Categ
Main Category
Sub Category
Sub Category
Sub Category
Main Category
Sub Category
Sub Category
Sub Category
Main Category
Sub Category
Sub Category
Sub Category
用户可以从查询页面选择多个类别和子类别
以下是与类别和子类别相关的领域分类:
Category.groovy
class Category {
String name
String description
static constraints = {
}
static hasMany = [ subCategories: SubCategory ]
}
class SubCategory {
String name
static hasMany = [requirements: Enquiry]
static belongsTo = [ category: Category]
static constraints = {
requirements nullable:true
}
}
子类别。groovy
class Category {
String name
String description
static constraints = {
}
static hasMany = [ subCategories: SubCategory ]
}
class SubCategory {
String name
static hasMany = [requirements: Enquiry]
static belongsTo = [ category: Category]
static constraints = {
requirements nullable:true
}
}
注意:下面的域用于保存查询页面中选定的类别和子类别。
class RegisteredCategories {
Enquiry enquiry
Category category
static constraints = {
}
static hasMany = [ subCategories: SubCategory ]
}
在查询页面上显示类别和子类别的GSP模板:
<g:each in="${marketlist}" status="j" var="category">
<g:hiddenField id="${j}" name="catId.${category.id}" value="${category?.id}" />
<DIV class="market-name">
<p>${category.name}</p>
</DIV>
<g:each in="${category.subCategories}" status="i" var="subCategory">
<div>
<g:checkBox class="cb1-element" id="check${i}" name="subId.${subCategory.id}" value="on"/>
<label for="check${i}" > ${subCategory.name}</label>
</g:each>
</g:each>
问题:
<g:each in="${marketlist}" status="j" var="category">
<g:hiddenField id="${j}" name="catId.${category.id}" value="${category?.id}" />
<DIV class="market-name">
<p>${category.name}</p>
</DIV>
<g:each in="${category.subCategories}" status="i" var="subCategory">
<div>
<g:checkBox class="cb1-element" id="check${i}" name="subId.${subCategory.id}" value="on"/>
<label for="check${i}" > ${subCategory.name}</label>
</g:each>
</g:each>
如何在控制器中获取多个选定类别和子类别并保存在数据库中。
有人建议我在createaction中创建一个groovy映射,并从GSP模板中获取类别和子类别的列表。还建议我使用Map键存储类别ID,并使用值存储与该类别相关的子类别ID列表
如何才能做到这一点?当您在
html
中使用列表时,您的名称
属性必须相同,并且您可以通过值
属性识别类实例的id
。将其转换为代码,您有:
<g:each in="" var="sub">
<g:checkBox name="subcategories" value="${sub.id}" />
</g:each>
然后,您只需通过id
查询记录即可
subcategories.each { id ->
SubCategory sub = SubCategory.get(id)
}
嗨@emilan,我能在这个问题上得到帮助吗?嗨@sérgio michels,我想对于这个解决方案,我可能需要使用地图。例如:all=[[parameter:'foo',value:'aaa'],[parameter:'foo',value:'bbb'],[parameter:'bar',value:'ccc'],[parameter:'baz',value:'ddd']]def myMap=[:]默认值为{[]}all.each{myMap[it.parameter]hi@sergio michels,use可以选择多个类别和子类别。如何处理这个?使用两个列表,一个用于类别,另一个用于子类别。hi@sergio michels,我创建了以下列表来获取类别和子类别。def sub=params.list('catId')。get(0)def subCat=params.list('subId')。get(0).这样可以吗?如果可以,我如何将它们与地图一起使用。?嗨@stefan Armburster,我能在这个问题上得到一些帮助吗?我想像你在